# baidu-reporter

## 使用方式

```shell
# WEB 模式，只启动 web 控制台，不启动任何引擎
python main.py --web 
# 等价于
python main.py --web-only

# 启动 web 的时候启动引擎
python main.py --web --crawl --evidence --report wap,pc,site

# 这几个选项可以任意组合，例如只启动采集引擎和证据收集引擎
python main.py --web --crawl --evidence
```


```shell
# 采集模式，采集指定关键字的URL列表，直接存入数据库
python main.py --crawl www.yunzhiju.net

# 批量采集模式，使用英文逗号分割多个域名
python main.py --crawl www.yunzhiju.net,www.yunzhiju.net

# 另外一种批量采集模式，从文件中读取域名，每行一个
python main.py --crawl-file ./domains.txt

# 这两种采集模式可以一起使用
python main.py --crawl www.yunzhiju.net,www.yunzhiju.net --crawl-file ./domains.txt

# 收集模式，收集所有待举报的链接的截图与 Token
python main.py --evidence

# 举报模式，干他丫的
# 可以通过参数决定使用哪个举报渠道
python main.py --report wap,pc,site
```

## 目录结构

```plain
├── app                             # 程序主包
│   ├── app.py                      # 包入口
│   ├── config/                     # 配置管理
│   ├── engines/                    # 存放所有的 engine 
│   │   ├── crawl_engine.py         # 采集引擎，从百度中采集指定域名的URL列表
│   │   ├── evidence_engine.py      # 证据收集引擎，截图、获取举报 Token
│   │   ├── report_engine.py        # 举报引擎入口，负责调用各个渠道的举报引擎
│   │   └── reporters               # 举报器
│   │       ├── base.py             # 举报器基类
│   │       ├── pc_reporter.py      # PC 渠道举报器
│   │       ├── site_reporter.py    # Site 渠道举报器
│   │       └── wap_reporter.py     # wap 渠道举报器
│   ├── models                      # ORM 层，数据库模型
│   │   ├── base.py                 # ORM 基类
│   │   ├── domain.py               # Domain 模型，存储域名记录
│   │   └── report_urls.py          # ReportURL 模型，存储举报记录
│   └── utils                       # 工具类
│       ├── common.py
│       ├── custom_base64.py
│       ├── dp.py                   # chrome 类
│       ├── gen_cookie.py
│       ├── ua.py
│       └── ydm_verify.py           # 验证码打码
├── captcha/    # 验证码图片
├── data/       # 目前主要放了 cookie 文件
├── imgs/       # evidence 中用到的截图
├── js/         # repoter 中用到的 js 文件
├── main.py     # 程序主入口
├── config.local.toml   # 开发环境配置文件
├── config.prod.toml    # 生产环境配置文件
└── tests   # 测试文件，可以不用管
```