主要是用来检查哪些IP可以用在goagent上面
- 默认使用pyOpenSSL库与多进程检查服务器证书,如果不支持,就用内置的ssl库连接到该IP,并使用cacert.pem来获取服务器证书
- 检查该 IP是否使用google.com的证书
- 以响应时间排序,时间越少,排序就越前
- IP组的格式
1.xxx.xxx.xxx.xxx-xx.xxx.xxx.xxx
如218.253.0.80-218.253.0.90
2.xxx.xxx.xxx.xxx/xx
如218.253.0.80/24
3.xxx.xxx.xxx.
如218.253.0.
4.xxx.xxx.xxx.xxx
如218.253.0.80
组与组之间可以用换行、'|'或','相隔开 - connect超时时间可以看g_commtimeout变量,时间为5秒,握手超时请看g_handshaketimeout,时间为7秒
- 默认会尝试使用pyOpenSSL库与多进程,好处:明显优化cpu及内存使用,最大线程数量限制了256条,在测试中设置768也可以正常运行,程序在启动时cpu较高,几秒后会降下来,如果不支持pyOpenSSL库,则使用内置的ssl库,最大线程数量限制在256条,在测试中,发现超过378条的话,会导致部分线程加载证书失败
- 当使用gevent时,会禁用多进程处理,因为暂时没找到会线程挂住的原因
- 脚本默认只提供一组IP来测试,如果想查找更多的IP,请自行添加到脚本中
可以放在把checkip.py与checkip.bat放在goagent/local目录下面,由于cacert.pem是取自goagent/local目录里面的同名文件,因此不需要复制cacert.pem到该目录,然后执行checkip.bat
如果执行成功,会在该目录新建一个ip.txt文件,里面的IP列表就是可用列表
把checkip.py与cacert.pem放在同一个目录,然后执行 python checkip.py 即可
由于开发时主要用python2.7版本,不过好像在python3.4版本也可以执行
- ping值记录(这个可能不会做了)
- 使用两个临时文件来记录程序运行过程中查询成功与失败的IP地址,方便下次使用
- 支持gevent,但只能在关闭pyOpenSSL库时使用
- 支持多进程方式,在pyOpenSSL库下默认使用,在gevent下禁用
- 优化线程队列的使用
- 默认会尝试使用pyOpenSSL库,支持高并发量,并且有效地优化cpu及内存使用,程序在启动时cpu较高,几秒后会降下来
- 设置默认线程的stack大小,减少内存消耗
- 使用队列来控制线程数量,默认改为256条线程,测试发现超过378条线程时,在windows中出现部分线程加载证书出错
- g_ssldomain 使用元组类型,检查多种域名的证书