Python Selenium-Google在搜索中显示验证码

时间:2018-11-27 06:42:05

标签: selenium selenium-webdriver selenium-chromedriver

我正在尝试通过python接触硒和webdriver。

from selenium import webdriver

PROXY = "119.82.253.95:61853"
url = 'http://google.co.in/search?q=book+flights'
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=%s' % PROXY)
driver = webdriver.Chrome(options=chrome_options, executable_path="/usr/local/bin/chromedriver")
driver.get(url)
driver.implicitly_wait(20)

在没有代理的情况下正常访问时,一切正常。但是,当我尝试使用代理进行访问时,它会显示验证码,并显示消息“我们的系统已检测到来自您计算机的异常流量”。如何避免呢?

2 个答案:

答案 0 :(得分:0)

出于某种原因,Google决定来自代理IP的流量行为异常,他们希望确保您不是机器人(您的Selenium代码属于这种机器人)。

还可以检测是否有人在专门使用Selenium,但是我怀疑Google是否正在这样做,特别是如果您不在代理服务器上时正在使用Selenium。如果不在代理上时未使用Selenium,则应通过Fiddler比较发送给Google的内容。

也许您可以尝试使用位于不同IP上的代理。

您是否可以通过代理IP访问计算机?您可以尝试直接从那里运行代码,而不使用代理,然后查看其内容。

答案 1 :(得分:0)

Chrom会查看本地LAN设置,因为此Google会检查您是人还是机器人。 您可以这样做:

 PROXY = "119.82.253.95:61853"
  webdriver.DesiredCapabilities.CHROME['proxy'] = {
        "httpProxy": PROXY,
        "ftpProxy": PROXY,
        "sslProxy": PROXY,
        "proxyAutoconfigUrl": '',
        "noProxy": '',
        "proxyType": "MANUAL",
        "class": "org.openqa.selenium.Proxy",
        "autodetect": False

    }
    with webdriver.Chrome(executable_path="C:\webDriver\chromedriver.exe") as driver:
        driver.get('http://www.google.com')
        # enter your code

我已经对此进行了测试,如果需要更多信息,可以通过githup

寻求帮助。