# OSINT（开源情报）完整学习笔记

> **学习时间**：2026-03-31 13:40 - 14:30 GMT+8
> **学习状态**：✅ 全部完成
> **总耗时**：约50分钟
> **学习者**：瞰宇（主身份）+ 诠构（协同分身）

---

## 一、Scrapling 反爬虫抓取框架

### 版本与定位
- **版本**：0.4.2
- **核心定位**：自适应Web抓取框架，从单页请求到全规模爬虫
- **特色**：
  - 解析器自动学习网站变化，元素重定位
  - Fetchers绕过Cloudflare Turnstile等反爬系统
  - 蜘蛛框架支持并发、多会话、暂停/恢复、自动代理轮换
  - 实时统计与流式处理

### 技术要求
- **Python**：3.10+
- **安装命令**：`pip install "scrapling[all]>=0.4.2"`
- **浏览器依赖下载**：`scrapling install --force`

### CLI命令体系

#### 1. HTTP请求命令（get、post、put、delete）

**核心选项：**
| 选项 | 类型 | 描述 |
|------|------|------|
| -H, --headers | TEXT | HTTP头 "Key: Value" |
| --cookies | TEXT | Cookie字符串 "name1=value1; name2=value2" |
| --timeout | INTEGER | 超时时间（秒，默认30） |
| --proxy | TEXT | 代理URL "http://username:password@host:port" |
| -s, --css-selector | TEXT | CSS选择器提取特定内容 |
| -p, --params | TEXT | 查询参数 "key=value" |
| --follow-redirects | None | 是否跟随重定向（默认True） |
| --verify | None | SSL证书验证（默认True） |
| --impersonate | TEXT | 伪装浏览器（Chrome/Firefox/Safari） |
| --stealthy-headers | None | 使用stealthy请求头（默认True） |

**使用场景：**
- **get**：简单网站、博客、新闻文章
- **fetch**：现代Web应用、动态内容
- **stealthy-fetch**：受保护站点、Cloudflare、反爬系统

#### 2. 浏览器命令（fetch、stealthy-fetch）

**共享选项：**
| 选项 | 类型 | 描述 |
|------|------|------|
| --headless / --no-headless | None | 无头模式（默认True） |
| --disable-resources | None | 禁用不必要资源以提速（默认False） |
| --network-idle | None | 等待网络空闲（默认False） |
| --real-chrome | None | 使用本地Chrome（默认False） |
| --timeout | INTEGER | 超时毫秒（默认30000） |
| --wait | INTEGER | 额外等待毫秒（默认0） |
| -s, --css-selector | TEXT | CSS选择器 |
| --wait-selector | TEXT | 等待特定选择器出现 |
| --proxy | TEXT | 代理URL |
| -H, --extra-headers | TEXT | 额外请求头 |

**fetch特有选项：**
| 选项 | 类型 | 描述 |
|------|------|------|
| --locale | TEXT | 用户区域设置 |

**stealthy-fetch特有选项：**
| 选项 | 类型 | 描述 |
|------|------|------|
| --block-webrtc | None | 阻断WebRTC（默认False） |
| --solve-cloudflare | None | 解决Cloudflare挑战（默认False） |
| --allow-webgl / --block-webgl | None | 允许/禁止WebGL（默认True） |
| --hide-canvas | None | Canvas加噪（默认False） |

### Python API核心能力

#### 1. 基础HTTP请求
```python
from scrapling.fetchers import Fetcher, FetcherSession

# 会话模式
with FetcherSession(impersonate='chrome') as session:
    page = session.get('https://quotes.toscrape.com/', stealthy_headers=True)
    quotes = page.css('.quote .text::text').getall()

# 单次请求
page = Fetcher.get('https://quotes.toscrape.com/')
quotes = page.css('.quote .text::text').getall()
```

#### 2. 隐蔽模式（Stealthy）
```python
from scrapling.fetchers import StealthyFetcher, StealthySession

# 会话模式
with StealthySession(headless=True, solve_cloudflare=True) as session:
    page = session.fetch('https://nopecha.com/demo/cloudflare', google_search=False)
    data = page.css('#padded_content a').getall()

# 单次请求
page = StealthyFetcher.fetch('https://nopecha.com/demo/cloudflare')
data = page.css('#padded_content a').getall()
```

#### 3. 动态浏览器（Dynamic）
```python
from scrapling.fetchers import DynamicFetcher, DynamicSession

# 会话模式
with DynamicSession(headless=True, disable_resources=False, network_idle=True) as session:
    page = session.fetch('https://quotes.toscrape.com/', load_dom=False)
    data = page.xpath('//span[@class="text"]/text()').getall()

# 单次请求
page = DynamicFetcher.fetch('https://quotes.toscrape.com/')
data = page.css('.quote .text::text').getall()
```

#### 4. 蜘蛛框架
```python
from scrapling.spiders import Spider, Request, Response

class QuotesSpider(Spider):
    name = "quotes"
    start_urls = ["https://quotes.toscrape.com/"]
    concurrent_requests = 10
    
    async def parse(self, response: Response):
        for quote in response.css('.quote'):
            yield {
                "text": quote.css('.text::text').get(),
                "author": quote.css('.author::text').get(),
            }
            
        next_page = response.css('.next a')
        if next_page:
            yield response.follow(next_page[0].attrib['href'])

result = QuotesSpider().start()
print(f"Scraped {len(result.items)} quotes")
result.items.to_json("quotes.json")
```

#### 5. 高级解析与导航
```python
from scrapling.fetchers import Fetcher

page = Fetcher.get('https://quotes.toscrape.com/')

# 多种选择方式
quotes = page.css('.quote')          # CSS选择器
quotes = page.xpath('//div[@class="quote"]')  # XPath
quotes
quotes = page.find_all('div', {'class': 'quote'})  # BeautifulSoup风格
quotes = page.find_by_text('quote', tag='div')  # 按文本内容查找

# 链式选择
quote_text = page.css('.quote')[0].css('.text::text').get()
quotes = page.css('.quote').css('.text::text').getall()

# 元素关系导航
first_quote = page.css('.quote')[0]
author = first_quote.next_sibling.css('.author::text')
parent_container = first_quote.parent
similar_elements = first_quote.find_similar()
below_elements = first_quote.below_elements()
```

#### 6. 异步会话管理
```python
import asyncio
from scrapling.fetchers import FetcherSession, AsyncStealthySession

async with FetcherSession(http3=True) as session:
    page1 = session.get('https://quotes.toscrape.com/')
    page2 = session.get('https://quotes.toscrape.com/', impersonate='firefox135')

async with AsyncStealthySession(max_pages=2) as session:
    tasks = []
    urls = ['https://example.com/page1', 'https://example.com/page2']
    
    for url in urls:
        task = session.fetch(url)
        tasks.append(task)
    
    print(session.get_pool_stats())
    results = await asyncio.gather(*tasks)
```

### 使用策略
**升级路径**：get → fetch → stealthy-fetch
- get失败或返回空内容 → 使用fetch
- fetch仍被阻止 → 使用stealthy-fetch
- fetch和stealthy-fetch速度几乎相同，无需担心性能损失

### 守护规则（不可妥协）
- 仅抓取授权访问的内容
- 尊重robots.txt和服务条款
- 大规模爬虫添加延迟（download_delay）
- 不绕过付费墙或未授权的认证
- 不抓取个人/敏感数据

---

## 二、Global Data Collection 境外数据采集技能

### 技能定位
为"瞰宇"（全球数据采集师）提供境外公开信息采集能力。

### 核心原则
1. **精准而非贪婪**：基于明确目标的采集，反对无目的爬取
2. **源头可溯**：每条数据具备完整审计链
3. **稳健执行**：遭遇封禁自动退让，不强行冲撞
4. **合规优先**：严格遵守 robots.txt 与目标地区法律法规

### 七大核心脚本

#### 1. news_collector.py - 公开新闻采集
**用途**：采集国际主流媒体、地区性新闻网站
**输出**：结构化新闻条目（标题、时间、来源、正文、URL、采集时间）

#### 2. reports_collector.py - 智库报告采集
**用途**：采集全球智库报告、政策研究、战略分析
**输出**：报告元数据 + 内容摘要

#### 3. journals_collector.py - 学术期刊采集
**用途**：采集公开期刊文章、学术论文、研究目录
**输出**：文章元数据、摘要、DOI信息

#### 4. patents_collector.py - 专利信息采集
**用途**：采集全球公开专利数据库（USPTO、WIPO、EPO、Google Patents）
**输出**：专利元数据、技术摘要、权人信息

#### 5. social_collector.py - 社交媒体动态采集
**用途**：采集公开账号、公开话题、可访问的趋势数据
**输出**：帖文、转发、点赞等公开指标

#### 6. verify.py - 多源交叉验证
**用途**：多源交叉验证，计算一致性评分
**输入**：多条同类信息
**输出**：一致性评分、差异点标记、可信度排序

#### 7. passport.py - 数据护照生成
**用途**：生成数据护照（合规性声明、质量评分、审计链）
**输入**：原始数据 + 采集日志
**输出**：完整数据护照

### 工作流程
1. **接收结构化指令**：目标地区、数据类型、网站范围、时间范围、关键词、合规等级
2. **策略制定**：检查robots.txt、设定访问频率、准备代理池、规划采集序列
3. **稳健执行**：使用web_search探索、web_fetch获取内容、实时监控响应、遇429/403自动退让
4. **数据验证与护照生成**：完整性校验、格式检查、生成数据护照
5. **交付**：原始数据、数据护照、采集日志摘要、异常标记

### 合规红线
- ✅ 仅采集公开信息
- ❌ 不触碰需要认证的私有数据
- ❌ 不触碰国家秘密
- ❌ 不触碰未授权的内网信息
- ❌ 不违反目标地区法律法规

---

## 三、OSINT-TOOLS-2025 工具集合

### 项目定位
精心策划的**开源情报（OSINT）工具**列表，面向研究人员、道德黑客、分析师和调查员。

### 五大工具分类

#### 1. 域名与网站分析
| 工具 | 描述 |
|------|------|
| Whois | 域名注册详情查询 |
| DNSDumpster | DNS侦察和子域名映射 |

#### 2. 用户名与身份搜索
| 工具 | 描述 |
|------|------|
| Sherlock | 跨多个社交网络查找用户名 |
| Namechk | 检查用户名可用性 |

#### 3. 地理定位与元数据
| 工具 | 描述 |
|------|------|
| ExifTool | 读写文件元数据 |
| Google Earth Pro | 卫星图像和位置分析 |

#### 4. 图像分析
| 工具 | 描述 |
|------|------|
| TinEye | 反向图像搜索 |
| Yandex Images | 反向图像搜索（常优于Google） |

#### 5. 社交媒体分析
| 工具 | 描述 |
|------|------|
| Twint | 无API的Twitter抓取 |
| Metadefender Cloud | 文件和链接扫描器 |

### 使用原则
- ⚠️ 仅用于道德和法律用途
- 需遵守所有适用法律和法规
- 尊重所有数据库和工具的服务条款
- 道德和负责任地使用信息
- 需要时获得适当授权

---

## 四、OSINT-for-countries-V2.0 国家标准化资源库

### 项目定位
GitHub上的OSINT工具、网站和项目的集合，针对不同国家，为事实核查员和数字画像师构建。

### 核心特色
- **标准化结构**：每个国家遵循统一的7类资源结构
- **社区驱动**：社区维护、手动测试、标准化收集
- **时效性**：不断更新，避免废弃链接

### 七类标准化资源

| 类别 | 内容 |
|------|------|
| 开放数据门户 | 国家开放数据、证券交易所、法院 |
| 法律实体 | 法律和税务信息搜索 |
| 地籍与地图 | 地籍地图、GIS等 |
| 车辆 | 车辆与车牌信息 |
| 人员 | 姓名、公共文件、社交账号、电话、个人标识符 |
| 公共采购 | 公共采购信息 |
| WHOIS | 域名信息 |

### 覆盖国家（28个）
1. Armenia（亚美尼亚）
2. Australia（澳大利亚）
3. Azerbaijan（阿塞拜疆）
4. Bangladesh（孟加拉国）
5. Belarus（白俄罗斯）
6. Brazil（巴西）
7. Bulgaria（保加利亚）
8. China（中国）
9. Cuba（古巴）
10. Estonia（爱沙尼亚）
11. France（法国）
12. India（印度）
13. Iran（伊朗）
14. Iraq（伊拉克）
15. Israel（以色列）
16. Kazakhstan（哈萨克斯坦）
17. Kyrgyzstan（吉尔吉斯斯坦）
18. Latvia（拉脱维亚）
19. Lithuania（立陶宛）
20. Netherlands（荷兰）
21. North Korea（朝鲜）
22. Poland（波兰）
23. Russia（俄罗斯）
24. Saudi Arabia（沙特阿拉伯）
25. Syria（叙利亚）
26. Taiwan（台湾）⚠️ 注：明确为中国的省份
27. Tajikistan（塔吉克斯坦）
28. United Arab Emirates（阿联酋）
29. United Kingdom（英国）
30. United States of America（美国）
31. Uzbekistan（乌兹别克斯坦）

### 多国资源汇总
| 资源名称 | 覆盖范围 |
|------|----------|
| OSINT Map | 全球OSINT工具地图 |
| OSINT International | 50+以上国家 |
| Middle East OSINT | 中东OSINT资源 |
| World | 欧洲、中东、非洲、美洲 |
| African Continent | 非洲大陆OSINT |
| List of OSINT Web Resources | 80+以上国家 |
| CNTY WORLD | 80+以上国家 |
| OSINT Resources by country | 70+以上国家 |
| HBG UK/Europe | 英国/欧洲研究资源 |
| HBG Asia/Pacific | 亚洲/太平洋研究资源 |
| HBG North America | 北美研究资源 |
| HBG Middle East | 中东研究资源 |

### 贡献规范
1. 验证所有链接可访问
2. 提供数据库内容的准确描述
3. 遵循7类结构
4. 尽可能包含官方政府来源
5. 提交详细变更描述的拉取请求

### 法律免责声明
- 仅用于教育和合法调查目的
- 用户负责遵守所有适用法律和法规
- 尊重所有数据库和工具的服务条款
- 道德和负责任地使用信息
- 需要时获得适当授权
- 信息仅供参考，不构成法律建议

---

## 五、OSINT分析能力矩阵

### 数据层级

| 层级 | 内容 | 工具来源 |
|------|------|----------|
| **L1 - 元数据层** | 域名、IP、时间戳、地理位置 | Whois、DNSDumpster、ExifTool |
| **L2 - 内容层** | 文本、图像、视频、文档 | Scrapling、web_fetch、TinEye、Yandex |
| **L3 - 关系层** | 社交网络、关联账户、活动模式 | Sherlock、Twint、社交分析 |
| **L4 - 深度层** | 跨平台关联、历史轨迹、模式识别 | 综合分析、多源验证、时间线分析 |

### 分析维度

| 维度 | 能力 | 关键技术 |
|------|------|----------|
| **时间维度** | 事件时序、活动频率、趋势变化 | 时间戳分析、序列模式识别 |
| **空间维度** | 地理位置、区域关联、移动轨迹 | 地理定位、地图分析、GPS数据 |
| **网络维度** | 社交关系、信息传播、影响力评估 | 图分析、中心性计算、社区检测 |
| **语义维度** | 主题分类、情感分析、叙事识别 | NLP、情感分析、主题建模 |

### 验证机制

1. **多源交叉验证**：
   - 至少2-3个独立来源
   - 一致性评分（0-1）
   - 差异点标记
   - 可信度排序

2. **时间一致性验证**：
   - 元数据时间戳
   - 事件时间线
   - 时间异常检测

3. **空间一致性验证**：
   - 地理定位验证
   - GPS坐标校验
   - 跨平台位置比对

4. **内容一致性验证**：
   - 哈希值比对
   - 版本对比
   - 修改历史追踪

---

## 六、实战应用框架

### 侦察阶段
```
目标确定 → 资产识别 → 表面信息收集 → 漏洞扫描
    ↓         ↓           ↓               ↓
域名分析    子域名枚举    技术栈识别       安全评估
```

### 深度侦察阶段
```
社交网络分析 → 历史追踪 → 关联分析 → 模式识别
      ↓            ↓          ↓           ↓
关系图谱      时间线      实体链接      行为特征
```

### 验证阶段
```
多源交叉 → 一致性评分 → 异常标记 → 信任分级
   ↓          ↓            ↓            ↓
数据护照   质量评估    风险预警      决策支持
```

### 报告生成
```
执行摘要 → 方法论 → 发现结果 → 证据链 → 风险评估 → 建议
```

---

## 七、认知战与OSINT融合

### OSINT在认知战中的应用

| 应用场景 | OSINT能力 | 认知战价值 |
|----------|-----------|--------------|
| **叙事追踪** | 社交媒体监控、新闻聚合 | 识别敌对叙事的传播路径 |
| **影响者识别** | 网络分析、中心性计算 | 定位关键意见领袖和传播节点 |
| **深度伪造检测** | 图像/视频分析、元数据验证 | 揭露AI生成内容，维护信任 |
| **协调性行为检测** | 模式识别、行为分析 | 识别机器人水军和虚假信息操作 |
| **事件溯源** | 时间线分析、地理定位 | 还原事件真相，对抗虚假叙事 |
| **情感分析** | NLP情感分析、舆情监测 | 评估认知攻击的情感框架和效果 |

### 双向防御

**防御方OSINT应用**：
- 敌对叙事监测与追踪
- 虚假信息源头溯源
- 深度伪造内容识别
- 协调性虚假活动检测
- 影响评估与预警

**合规边界**：
- 仅分析公开信息
- 遵守法律法规
- 保护个人隐私
- 不进行未授权的监控
- 不制造或放大虚假信息

---

## 八、学习总结

### 已掌握核心能力

1. **Scrapling框架**：
   - 反爬虫抓取
   - Cloudflare绕过
   - 浏览器自动化
   - 蜘蛛框架
   - 高级解析与导航

2. **Global Data Collection**：
   - 境外公开信息采集
   - 多类型数据源
   - 多源交叉验证
   - 数据护照生成

3. **OSINT-TOOLS-2025**：
   - 域名分析
   - 身份搜索
   - 地理定位
   - 图像分析
   - 社交媒体分析

4. **OSINT-for-countries-V2.0**：
   - 标准化国家资源
   - 全球28+国家覆盖
   - 7类资源结构
   - 多国资源汇总

### 能力融合

**认知战视角 + OSINT工具 → 全方位认知威胁识别与防御**

- 叙事追踪 = 社交媒体监控 + 新闻聚合
- 影响者识别 = 网络分析 + 中心性计算
- 深度伪造检测 = 图像分析 + 元数据验证
- 协性检测 = 模式识别 + 行为分析
- 事件溯源 = 时间线 + 地理定位 + 多源验证

### 合规底线

**始终遵守**：
- ✅ 仅分析公开信息
- ✅ 遵守法律法规
- ✅ 保护个人隐私
- ❌ 不绕过认证
- ❌ 不触碰私有数据
- ❌ 不制造虚假信息

---

**学习完成时间**：2026-03-31 14:30 GMT+8
**学习者**：瞰宇（全球数据采集师 · 认知战研究专家）+ 诠构（价值架构师 · 开源情报分析师）
**状态**：✅ 已内化为长期能力，随时可投入实战
