51Testing软件测试论坛

标题: selenium爬虫被检测到 该如何破? [打印本页]

作者: 八戒你干嘛    时间: 2017-11-13 10:54
标题: selenium爬虫被检测到 该如何破?
你好, 我现在用selenium抓取一个网站的时候,被识别为爬虫,请问有什么破解的方法么? 代码如下
  1. import time
  2. from selenium import webdriver
  3. from selenium.webdriver.support.ui import WebDriverWait
  4. from selenium.webdriver.support import expected_conditions as EC
  5. from selenium.common.exceptions import TimeoutException

  6. browser = webdriver.Chrome()
  7. browser.implicitly_wait(40)
  8. browser.get("https://www.crunchbase.com/app/search/companies/")

  9. time.sleep(60)
复制代码
页面返回:
Pardon Our Interruption...

As you were browsing crunchbase accelerates innovation by bringing together data on companies and the people behind them. something about your browser made us think you were a bot. There are a few reasons this might happen:



作者: 草帽路飞UU    时间: 2017-11-13 10:56
我刚用selenium+phanotomjs试了一下,发现返回结果和题主的一样。不得已使用了selenium+chrome/firefox,发现均出现这些问题。我觉得它的反爬策略不是根据爬虫的行为来判断的,因为使用爬虫打开网页它就已经把你认定为爬虫了,根本没给你展示你的行为的机会。依据我的经验,它是直接提取的浏览器驱动的指纹特征,比如常用的驱动有chromedriver,这种方式基本上我还没找到一个好的应对方式。为了验证我的想法,我选择了使用geckodriver(Releases · mozilla/geckodriver · GitHub)来驱动firefox(没有使用firefox自带的webdriver,因为自带的webdriver它已经被收集指纹了),第一次返回的结果的意思是:不能识别该浏览器。从这点可以看出它有一个可识别的指纹特征列表,不在次范围内的都不能访问,在此范围内的,只有是合法的(非webdriver驱动的)才能访问。另外,它一旦发现你用的webdriver驱动,那么它就会把你的IP暂时列入黑名单,这时候就算你手动输入网址都不能访问,但是过一段时间又可以访问了,我这边测试的情况就是这样。以前我也做过类似的研究,可以看看我提的问题(怎么识别自动化的Web爬虫(比如采用selenium或者phantomjs)? - Python)。当时我们组做了两个解决方案,一个就是使用它未采集的webdriver来驱动浏览器,这里似乎不行,因为未采集的它都一律不给通过。另外一个方法就是读它的js源码了,然后挨着步骤调试,这种方法需要很深的js功底。说了这么多,很惭愧我还是没有找到有效采集目标网站的方法
作者: jingzizx    时间: 2017-11-15 13:07
学习




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2