您现在的位置: 华盟网 >> 手机 >> 网络安全 >> 正文

猥琐方法获取防爬虫网页源码

作者: T00ls    文章来源: 黑白之道     阅读量:


最近在整理一些搜索引擎的python脚本时,发现现在有很多引擎都不能直接通过

  引言

  最近在整理一些搜索引擎的python脚本时,发现现在有很多引擎都不能直接通过urllib或者requests库来获取了,因为有很多网页采取了动态js以及防爬虫的措施,比如bing、zoomeye,虽然他们都提供了api来给你用,但还是有些不爽,比如bing限制了一个月5000条,zoomeye是只显示100条。那么这样就能拦住我们这些脚本小子了?那我们和普通网民有什么区别,不行,总得想想办法。

  思路

  楼主还是想过一些高大上的方法的,比如selenium加phantomjs,楼主试了,他能对付必应,但还是被zoomeye拦截了。于是楼主换成了selenium加chrome,发现还是不行,我凑。后来发现selenium这些包均是利用了chrome remote debugging protocol协议和浏览器通讯,于是尝试直接使用这个协议来操作浏览器,有兴趣的可以网上搜索相关关键词。大概原理是这样的:

  1.开启chrome debug模式 .\chrome --remote-debugging-port=9222

  2.使用chrome remote debugging protocol里提供的方法来和浏览器通讯

  3.通讯协议使用websocket

  经过以上尝试,楼主只研究到了打开一个网址的地方,后续会继续琢磨一下,搞好了再来分享,这里先分享一个猥琐的方法:

  我们都知道,手工获取源码是非常简单的,crtl+s就完事了。。。不管你什么措施,除非你不想让浏览器打开,就算你以后防止浏览器打开源码,我们还有devtools,你也想防吗?那么好的,我们来模拟键盘完成这个程序,其实这个用vbs实现很简单,不过楼主python习惯了,还是用这个吧。

  实现

  模拟步骤:

  1.打开chrome

  2.打开网址

  3.ctrl + s

  4.输入保存文件名

  5.确认保存

  中间加入一些缓冲时间。

  代码如下:

        

  (这里因为楼主电脑使用了搜狗输入法,所以需要发送两个enter键,一个是确认输入,一个是确认保存,如果你的输入法不需要确认输入,就删掉一个。然后chrome设置为默认浏览器,并将chrome.exe路径加入path)

  使用前,可以手动保存选择一下想保存的路径,虽然也可以使用python实现。这样我们就获取了源码,后面使用soup或者re来获取url就不愁找不到想要的信息了。楼主电脑很破,上面打开chrome以及其他缓冲时间都设置的有些许长,可以根据主机性能设置。

  运行这个脚本需要Python for Windows Extensions,你可以在这里找到:

  https://sourceforge.net/projects ... ywin32/Build%20220/

  装了之后,你就可以用python写一些类似vbs的脚本了。

  0x04 小结

  以上分享了一个模拟键盘的方法,来获取网页源码源码。演示代码,比较丑陋。优点:轻松绕过所有防爬,实现原理简单,不需要注册api,也不需要登录。缺点:程序运行时,不能乱动键盘和鼠标,实现技术太不hacker了。但这种简单的方法其实是可以用到很多地方的,发挥你的想象力。好了,可以交作业了,见笑。

        
阅读原文     举报

  • 上一篇文章:
  • 下一篇文章: 没有了
  •