Javascript 硒幻影可以';t抓取网站bot检测

Javascript 硒幻影可以';t抓取网站bot检测,javascript,python,selenium,phantomjs,Javascript,Python,Selenium,Phantomjs,我不能刮这个网站是python selenium phantomjs上请求的屏幕截图。我不知道他们是如何发现这是一个机器人的,但在图片上说需要javascript和验证码,也许还需要其他什么东西?我肯定不是以超人的速度刮,因为这是我的第一个要求,所以不是原因。另外,当我在浏览器上粘贴相同的请求时,它会指向我想要的页面,并且可以正常工作 br = webdriver.PhantomJS('bin/phantomjs') br.set_window_size(1366, 200)

我不能刮这个网站是python selenium phantomjs上请求的屏幕截图。我不知道他们是如何发现这是一个机器人的,但在图片上说需要javascript和验证码,也许还需要其他什么东西?我肯定不是以超人的速度刮,因为这是我的第一个要求,所以不是原因。另外,当我在浏览器上粘贴相同的请求时,它会指向我想要的页面,并且可以正常工作

    br = webdriver.PhantomJS('bin/phantomjs')
    br.set_window_size(1366, 200)
    br.get("website")
    br.save_screenshot(x)

我现在开始工作了。我只是为了其他不这样做的人。启用javascript和假用户代理

    cap = webdriver.DesiredCapabilities.PHANTOMJS
    cap["phantomjs.page.settings.javascriptEnabled"] = True
    cap["phantomjs.page.settings.loadImages"] = True
    cap["phantomjs.page.settings.userAgent"] = 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'
    br = webdriver.PhantomJS('bin/phantomjs',desired_capabilities=cap)

一般来说,有帮助的事情:

  • 标题应类似于普通浏览器,包括:
    • 用户代理:使用最近的一个(请参阅),如果您发出多个请求,最好使用随机最近的一个(请参阅)
    • 接受语言:类似于“en,en-US;q=0,5”(适应您的语言)
    • 接受:标准格式类似于“text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8”
  • 导航:
    • 如果发出多个请求,请在它们之间放置一个随机超时
    • 如果打开在页面中找到的链接,请相应地设置Referer标题
    • 或者更好,模拟鼠标活动来移动、单击并跟随链接
  • 应启用图像
  • 应启用Javascript
    • 检查是否在客户端javascript页面上下文中设置了“navigator.plugins”和“navigator.language
    • 检查您使用的客户端是否没有注入明显的javascript变量(如cdc、uuu噩梦…)
  • 使用代理

好吧,不管怎样,我让它工作起来了,现在我启用了javascript和假用户代理。您可以提交自己问题的答案并接受它。其他人以后可能会发现它很有用。在答案中添加了它:)