-
-
Notifications
You must be signed in to change notification settings - Fork 1k
Home
本文档的目的在于使有Python爬虫经验的读者在30分钟内熟悉为本项目做出贡献的方法,当原作者不再维护的时候,可以为后续维护者减轻维护门槛与负担。
- 添加新爬虫的方法
- 主要接口与配置文件规范
- 本项目中设计的常用函数工具及简要文档说明
- 为本项目贡献的规范与建议
爬虫代码在ssshare/ss/crawler.py中,配置文件在ssshare/config.py中。想添加新的ss(r)源共有三种方法:
- 对于订阅源,在配置文件中添加订阅源地址(见“主要接口与配置文件规范”一节);
- 对于简易网页,在配置文件中添加网页的 url(见“主要接口与配置文件规范”一节);
- 对于复杂爬虫,需要手动编写爬虫函数。
本项目已经为爬虫的编写制作了一些工具,只要在ssshare/ss/crawler.py中的main
函数之前定义一个:
- 以
crawl_
开头 - 严格按照接口规范返回值
- 不显式指定函数的输入也能正确输出结果
的函数,运行网站后就可以自动爬取帐号,并将帐号于网站上显示。
简易运行:在项目根目录中运行 ipython 或 python 终端,可以使用 from ssshare.ss.crawler import *
引入依赖项,然后使用 ipython 或 python 终端测试运行刚写好的程序
自动测试:
- 注释掉ssshare/config.py中所有其他内容
- 将ssshare/ss/crawler.py中所有其他以
crawler_
开头的函数名修改为非crawler_
开头 - 运行
python .travis-test.py
,将运行一遍完整的爬虫和验证ss帐号的功能。由于代码运行的时候捕获并打印了所有异常,所以应当阅读终端输出的日志判断爬虫成功还是失败。 - 撤销前两步的修改
上线后的日志阅读:
heroku的dashboard中有个名为“papertrail”的app,点击这个app即可跳转到日志页。在设置中添加两个string filter,GET
和HEAD
,之后获取到的日志将只包含网站爬虫和错误的内容。
配置文件中有2个变量,格式均为装载着网址的list:List[Str]
- url:简易爬虫的目标网址。该爬虫只将网页源码获取到后检测
ssr://
、ss://
链接或图片格式的二维码,无法解析更复杂的网页。 - subscriptions:订阅源
函数应定义或导入于ssshare/ss/crawler.py中的main
函数之前
应当以crawl_
开头,主函数将检提取所有符合此规范的函数作为爬虫函数。
函数不应当设定任何必填输入参数。
返回2个参数,按先后顺序分别为:
- servers
- info
其中,servers -> List[Dict[Str:Str]]
servers是一个列表,列表的每个成员为包含ss(r)帐号关键信息的字典。字典所有的key和value都应当为字符串。
关于ss(r)关键信息的字典说明:
key | 是否必填 | 说明 |
---|---|---|
server | 是 | 服务器地址 |
server_port | 是 | 服务器端口 |
password | 是 | 密码 |
method | 是 | 加密方式 |
ssr_protocol | 否 | 协议 |
protoparam | 否 | 协议参数 |
obfs | 否 | 混淆 |
obfsparam | 否 | 混淆参数 |
remarks | 否 | 备注 |
来源网站信息info -> Dict[Str:Str]
来源网站信息是为了使用户能够支持提供免费ss(r)帐号而提供的信息。其中包括三个key,均为必填:
- message:来源网站提供的少量信息,比如什么时候更新的帐号,法律或免责信息等
- name:来源网站名称
- url:来源网站网址
工具函数都在ssshare/ss/parse中,使用的时候只需要from ssshare.ss.parse import 函数名称
即可。
输出输入都是str格式,进行urlsafe_base64编码/解码。会自动处理尾部等号。
输入 ssr://
、ss://
链接,输出储存本条ss帐号关键信息的字典。
输入图片地址或base64格式的二维码链接,返回解析结果(字符串)
- 尽可能不使用 requirements.txt 之外安装不够方便的依赖库;
- 尽可能不使用需要特别安装的数据库;
- 除了对代码行长度80字符的限制可以不遵守外,代码严格按照 Google Python 编程规范执行。