继上一篇文章某数的v5版的另类bypass方案 hkhnqflv 8x7yi61c cookie http://www.moonapi.com/news/43.html 后,使用同样的方案尝试了医疗器械经营企业(许可) 

依旧按照之前的方案,首先f12调试。

没有debugger断点,ok,这一步操作省了,继续找翻页事件,是直接调用的函数devpage(2),再跟进去后就开始是混淆的代码了,算了,懒得看,console中试了下devpage可以翻转到任意一页,good,省事了。

当然这里有一个问题,devpage中会去取dom的值,同时因为触发的翻页ajax返回的是html, 那么就需要保证每次返回值都正确渲染出来,整个流程才能正常。如果翻页太频繁,或者刚好遇到服务器错误(有一次还报了条sql执行错误,sql语句都打印了出来),就没办法继续了。

那如果出现这种情况怎么处理呢?python脚本中检测一下返回结果,如果为空或者未解析出有效果信息,则刷新一下页面,跳转到当前处理的页页继续处理。

好了,完整流程就是这样,打开页面,注入翻页js翻到指定页面,获取ajax响应,分析响应,入库。

愉快地让爬虫跑起来吧。

15条

30条

45条

60条

...

突然,页面打不开了,手动去浏览器访问也会返回400错误!

看起来是做了ip访问的限制,触发了反爬机制。

这种情况要处理,估计就只有两条路,一条是去仔细分析爬虫与手动的区别,按说来正常手动去浏览,即使多看了一下页面,也不应该会被屏蔽,然后再根据区别适当调整爬虫,懒得分析,直接把爬虫的间隔时间调整到10-15秒随机,结果还是采集十几页后同样被屏蔽,算了,放弃,避免耽误太多时间。

另一条路就是换ip! 既然是爬虫,没有个代理ip池随时备用着怎么行,于是修改自制的浏览器加上代理功能,同时增加函数让python脚本可以动态去设置代理ip,于是整个流程变为:正常工作 -> 采集下一页面,异常 -> 获取代理ip -> 设置代理ip -> 刷新页面。

换上新装备后,爬虫又快乐地跑起来来了,只不过每采10几页就需要换下一个ip,所以这种情况需要准备大量的代理ip。

写在最后,药监局已经换上新版网页,在新版网页中不再全部展示所有记录,只提供输入框查询接口,不得不说,这算是一种降维打击,以后就只能通过许可证号进行枚举了。