xyuanmu / checkiptools

CheckIPTools 扫描谷歌IP以及实用IP转换小工具
246 stars 60 forks source link

dig时卡住了能跳过吗? #8

Open sishentibu opened 8 years ago

sishentibu commented 8 years ago

新版中,参照里面的注释,新建了dig_url.txt 来dig 但有时候有些网址下不了,卡在那边动不了,又不提示失败。半小时了也不动 不能下的情况不明,因为有时候能下,有时候不能下,貌似跟时间也有关系

另一个项目的dig,可以按ctrl+c跳出一个。但这个按了没反应。

有什么按键能退出吗? 如不能的话我就把一次dig的网址数目减小吧。

sishentibu commented 8 years ago

发现下载下来的dns ip是实时保存到dig_ip.txt 但不知道我操作问题还是程序的逻辑就这样:手动关闭掉dig.bat,重新运行dig.bat的时候,会在dig_ip.txt的最后行继续添加ip,完了后会从“本次”运行程序下载的dns开始dig,而不是从dig_ip.txt文件的第一行开始。

如果程序确实是这样的话,那我下载dns ip完成后手动对dig_ip.txt去重也可以达到目的了。

xyuanmu commented 8 years ago

pydig目前只是简单实现,还没开始优化,目前顺序是这样的,存在 dig_url.txt 优先下载网址,下载完一条网址保存一次IP,完毕开始dig并将 dig_url.txt 重命名,存在 dig_ip.txt 则直接开始dig,完毕将 dig_ip.txt 重命名。否则手动输入网址/IP。dig 结束后整理IP段。 抽空再研究下代码,将dig失败的IP保存到 dig_tmperror.txt,成功的保存到 dig_tmpfinished.txt,启动前先检查这两份文件,跳过 dig_tmpfinished 里的IP,dig_tmperror 还会再检测,当然也可以将 dig_tmperror 里的IP复制到 dig_ip 进行第二次dig看是否能返回数据。接下来就是整合IP段到 googleip.txt 还有多线程的问题了。

sishentibu commented 8 years ago

辛苦了。 dig_sort_range = 1 我以为是直接把dig出来的ip段复制到 googleip.txt 的。但发现改了后取消注释也没用。原来是你想要做整合啊。 难道现在还是单线程的?我这边实际上与原先的dig程序比较的话,速度基本上是原先的2倍左右。

xyuanmu commented 8 years ago

已经添加多线程,默认50,欢迎测试。

sishentibu commented 8 years ago

试了下bestdns里面全部的dns 速度上来说,比原先快了非常多,半个小时左右就完了 但导出来的数据感觉不太理想 我就改了一个地方:

pydig结束后整合IP段到 googleip.txt

dig_sort_range = 1

下面是产生的个文件列数 dig_ip.0.txt 10477 dig_log.txt 3138 dig_range.txt 15 dig_tmperror.txt 7328 dig_tmpfinished.txt 3149 googleip.txt 10 (其中有几个是 /23)

从结果来看,导出的ip段非常少。是不是因为速度快,然后超时时间设置的短了? 我再运行一次dig.bat看看 (保留上次完成的数据, 把dig_tmperror 里的IP复制到 dig_ip 进行第二次dig) 第二次运行的时候,虽然有 dig_tmperror ,但仍提示输入ip/网址,把dig_tmperror 里的IP复制到 dig_ip 后才能进行dig)

sishentibu commented 8 years ago

第一次dig结束后 dig_log.txt 中的ip段,我提取了下,是有632段。 正常来说,dig_range.txt 与 googleip.txt 都应该有632段。(googleip.txt 的复制如果还没处理的话,这个往后再说) 所以怀疑是不是导出的时候哪里有问题。

sishentibu commented 8 years ago

第二次dig结果如下(行数) dig_log.txt 5402
dig_range.txt 632 dig_tmperror.txt 12377 dig_tmpfinished.txt 5425 googleip.txt 580

手动整理后: dig_log.txt (ip段) 765 dig_range.txt 632 dig_tmperror.txt 7324 dig_tmpfinished.txt 5425 googleip.txt 580

xyuanmu commented 8 years ago

发现一个多线程的问题,等会儿发布修复的版本。实际上整理出来的IP段不全。

sishentibu commented 8 years ago

恩,明天我再试试

xyuanmu commented 8 years ago

第一次接触多线程,做了简单的修复,可以降低错误率,可是IP多了还是会有几个IP出错,见谅了! 对了,如果设置直接输出到 googleip.txt 会合并相邻的IP段并且删掉 ip_range_bad.txt 中存在的IP段,所以实际上会比 dig_range.txt 里少。

sishentibu commented 8 years ago

dig_range.txt 368 dig_tmperror.txt 1536 dig_tmpfinished.txt 8916

这么多个dig_log文件,我这加起来有6w多了,处理起来好慢。。。 处理了全部dig_log后,ip段为871

dig的成功率比上一版高了很多,不知道会不会跟网络环境有关。 结果输出比上一版好了很多,但还是有较多遗漏的。 不知道这个是不是你指的ip多了产生的问题。

sishentibu commented 8 years ago

偶然发现,批处理 echo off 跟 echo on 的速度完全不一样啊,差了不知道多少倍

sishentibu commented 8 years ago

同样的50线程,为何checkip的时候,一行一行,挤牙膏似的。dig 的时候能做到刷屏一样的。

xyuanmu commented 8 years ago

dig处理的IP多了会出现一定几率的报错,导致无法输出到error或者finished文件,所以结束后两者相加的IP数会少于dig_ip中的数量,测试的时候基本1K个会少2个左右。这个影响也不是很大,关键是效率高了很多,程序版的dig成功率也并不是很高,跟网络有关系,特别是封锁加剧的时候,dig1K个IP要好几个钟,而pydig不会,多线程2分钟不到就结束了。因为延时设置的比较低,试过提高延时根本没用,能通的很快就通,不能通的延时到10秒都不过,所以会有结束后重dig一次的选项,第二次就有部分能过了。 checkip会很整齐是大部分日志都没有输出只输出结果,pydig是别人写的,我只是改变了方案而已所以日志会像刷屏一样。 昨天测试的时候一共刷了1W多日志就已经收获不少新IP段,相信你也收获颇丰。日志超过6K会滚,但IP段是不断累加去重的,所以多了会慢些。

sishentibu commented 8 years ago

了解 这个少一点倒是影响不大。现在也不差那么点。 输出到dig_range 的结果感觉还可以再优化下。我把error中个ip 复制过去再 dig 一遍,虽然error 中的数量去重后没减少多少,但 dig_range 中的 ip 段却增加了200左右。

这几天试着找哪些ip能或者久一点。然后发现有些明明每次扫描都显示可用的ip,放进去依然挂掉了。搞的我都迷糊了

xyuanmu commented 8 years ago

pydig.py里有结束后重新dig一次error文件的选项 dig_redig_error,默认关闭。xx-mini IP挂得太快,建议先用 goproxy,前天放的6个IP今天还能用。xx-net好像3.1.0版加入了http2不知道效果如何还没用。

sishentibu commented 8 years ago

pydig结束后重新dig一次dig_error中的IP

dig_redig_error = 1 这个设置后,dig_range里有600多段,这数量也可以了,毕竟快。

当Googleip.txt不存在的时候,提示 IOError: [Errno 2] No such file or directory: 'googleip.txt' 它不能够自动创建的吗?只能合并?

最近放goproxy里面的ip,一直还剩几个,速度四五百k,看看网页也能用,就没换xx-mini了。 3版本的xx都还没用过呢