我正在尝试通过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)
在没有代理的情况下正常访问时,一切正常。但是,当我尝试使用代理进行访问时,它会显示验证码,并显示消息“我们的系统已检测到来自您计算机的异常流量”。如何避免呢?
答案 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
寻求帮助。