八戒你干嘛 发表于 2017-11-13 10:54:16

selenium爬虫被检测到 该如何破?

你好, 我现在用selenium抓取一个网站的时候,被识别为爬虫,请问有什么破解的方法么? 代码如下
import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

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

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:

[*]You're a power user moving through this website with super-human speed.
[*]You've disabled JavaScript in your web browser.
[*]A third-party browser plugin, such as Ghostery or NoScript, is preventing JavaScript from running. Additional information is available in this support article.
To request an unblock, please fill out the form below and we will review it as soon as possible.

该网站使用了http://distilnetworks.com的反爬服务.

草帽路飞UU 发表于 2017-11-13 10:56:50

我刚用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:39

学习
页: [1]
查看完整版本: selenium爬虫被检测到 该如何破?