【问题标题】:selenium phantomjs can't scrape a website bot detectionselenium phantomjs 无法抓取网站机器人检测
【发布时间】:2017-06-09 14:03:22
【问题描述】:

我无法抓取此站点here 是对 python selenium phantomjs 的请求的屏幕截图。我不知道他们是如何检测到它是一个机器人,但在图片上说需要 javascript 和验证码,也许还需要什么其他的东西?我绝对不会以超人的速度刮擦,因为这是我的第一个要求,所以不是原因。附言当我在浏览器上粘贴相同的请求时,它会定向到我想要的页面并且可以正常工作。

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

【问题讨论】:

  • 好吧,没关系,我现在开始工作了,我确实启用了 javascript 和假用户代理
  • 您可以提交自己问题的答案并接受。其他人以后可能会发现它很有用。
  • 在答案中添加了它:)

标签: javascript python selenium phantomjs


【解决方案1】:

总体上可以提供帮助的事情:

  • 标题应该和普通浏览器类似,包括:
  • 导航:
    • 如果您发出多个请求,请在它们之间放置一个随机超时
    • 如果您打开页面中的链接,请相应地设置 Referer 标题
    • 或者更好的是,模拟鼠标活动来移动、点击和跟随链接
  • 图片应该启用
  • Javascript 应该启用
    • 检查客户端 JavaScript 页面上下文中是否设置了“navigator.plugins”和“navigator.language
    • 检查您使用的客户端没有注入明显的 javascript 变量(如 _cdc、__nightmare...)
  • 使用代理

【讨论】:

    【解决方案2】:

    好吧,我现在开始工作了。我只是为了其他不这样做的人而提出这个问题。启用 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2021-10-23
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      相关资源
      最近更新 更多