关于GSIL-PRO
该项目修改自开源项目GSIL,初衷是为了方便自己的使用,并做了一些测试
关于开源项目GSIL
原作者是个大神,GSIL是个神器。 大神是这样想的:我用哈希校验和定时任务去搜索,然后发邮件,保证在第一次过后的搜索中,每次搜索该关键字只会向我发送我没看过的符合要求的新项目,达到定时监控的目的,部署在服务器上,只需要盯着邮箱就好了。 我等菜鸟是这样想的:信息搜集一遍过,能快速获取信息,不用一页一页慢慢的翻便是极好的,邮箱发送过于繁琐,且当天查询量大的话,自己的pop3服务会被限制和警告发送垃圾邮件,给自己发也不行。
经过测试,使用临时邮箱申请小号的方式不可取,github查的很严,必须要是拥有真实仓库,经常登录的正常账号才有5000/h的查询API,小号一律按照未验证的60/h处理。 因为代码中写了多线程,即针对每一条用户定义的规则启用一个线程去执行,但是API的请求速率限制为30/min,所以个人建议一条规则一条规则的跑,当然,如果你有很多大号、或是有很多朋友愿意借你tocken就另说了。 顺便提一下,即便是最小权限的tocken,也可以访问该账户的公共存储库,一旦泄露,别人就可以删掉你所有的公共仓库,若配置不当,还能访问和删除私有仓库。试问,怕不怕?
修改内容
经过本次修改后,去除发邮件方式,去除搜索哈希值校验,将结果保存在本地 /root目录下。另加入rule.txt精选规则集,单一tocken的话只能一条一条跑,否则会触发API请求限制。另engine.py文件中可以修改搜索的页数。
使用方式
将自己的tocken放进config.gsil配置文件中,多个tocken使用逗号隔开,邮箱无需配置。
从rule.txt中找到自己需要的规则,并拼接成关键字放到rules.gsil配置文件中。
使用pip3安装依赖
pip3 install -r requirements.txt
开始搜索
python3 gsil.py test
原项目GSIL代码分析,方便快速定位功能点
用户也可以根据需求自己更改
参数配置: 1、邮箱pop3秘钥,邮箱等 2、github的tockens
限制 每tocken每小时最大5000次请求,一条内容算一次请求 对于未经身份验证的请求,速率限制允许每小时最多60个请求 Search API具有自定义速率限制。对于使用基本身份验证,OAuth或客户端ID和密码的请求, 您每分钟最多可以进行30个请求。对于未经身份验证的请求,速率限制使您每分钟最多可以进 行10个请求。
关于源码,有兴趣的可以改成自己想要的样子
gsil.py 主函数执行gsil包中的主函数,如果参数异常等,调用notification模块
GSIL包
init.py 主函数执行gsil gsil函数: 如果参数一为“--report”,发送运行数据报告 如果参数一为“--verify-tokens”,循环校验tocken(使用engine的verify函数) 否则开始搜索,并生成报告 generate_report函数: 生成报告,HTML格式 start函数:(传入规则组---test) 获取规则组中所有规则 创建线程池pool 为每一个规则对象创建线程(执行search函数) search函数: 为每一个搜索随机选择一个tocken 调用engine的搜索函数
engine.py 定义每页报告的最大数量 定义默认的扫描页数,原为4,现修改为100,即搜索前5000条,即限制数 修改完后,最好一条规则一条规则的测,可以多准备几个tocken Engine类: __init__函数:变量赋值 process_pages函数: 处理每一页抓取的数据 verify函数: 验证githubtocken search函数: 利用API通过规则获取内容,处理并发送 codes函数: 去除代码中图片显示,提取关键词上下几行
config.py 关于配置文件 分割tockens,添加项目类型、邮箱类型、代码规则等 get_rules函数: 读取规则与匹配模式
notification.py notification函数: 原本是连接pop3服务器,随机选择指定邮箱发送报告 现改为将报告保存在本地 /root目录下
process.py clone函数: 下载仓库 send_running_data_report函数: 发送运行数据报告