在谷歌云引擎中使用Chromedriver代理

2024-05-04 01:08:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用chromedriver的Google云引擎中的代理

我尝试过许多建议的解决方案(见下文),但每次IP都是谷歌服务器上的IP

尝试1:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options


chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--window-size=1920x1080")
chrome_options.add_argument("--ignore-certificate-errors")

myproxy = '207.157.25.44:80'
prox = Proxy()
prox.proxy_type = ProxyType.MANUAL
prox.http_proxy = myproxy
prox.ssl_proxy = myproxy

capabilities = webdriver.DesiredCapabilities.CHROME
prox.add_to_capabilities(capabilities)

driver = webdriver.Chrome(options=chrome_options, 
    executable_path="/user/sebastien/chromedriver", 
    desired_capabilities=capabilities)
driver.get("https://www.whatismyip.com/")
get_location()


尝试2:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options


chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--window-size=1920x1080")
chrome_options.add_argument("--ignore-certificate-errors")

myproxy = '207.157.25.44:80'
prefs = {}
prefs["network.proxy.type"] = 1
prefs["network.proxy.http"] = myproxy
prefs["network.proxy.ssl"] = myproxy

chrome_options.add_experimental_option('prefs', prefs)

driver = webdriver.Chrome(options=chrome_options, 
    executable_path="/user/sebastien/chromedriver")
driver.get("https://www.whatismyip.com/")
get_location()

尝试3:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options


chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--window-size=1920x1080")
chrome_options.add_argument("--ignore-certificate-errors")

myproxy = '207.157.25.44:80'
chrome_options.add_argument("--proxy-server=http://%s" % myproxy)

driver = webdriver.Chrome(options=chrome_options,
    executable_path="/user/sebastien/chromedriver")
driver.get("https://www.whatismyip.com/")
get_location()

他们中没有一个人会以所需的IP访问该网站

同样,在GCP Compute Engine、Canonical、Ubuntu、16.04 LTS、amd64 xenial上运行代码时也会出现此问题

以下是测试IP的功能:

import json
from urllib.request import urlopen

def get_location(ip=False):
    if ip:
        html = urlopen(f"http://ipinfo.io/{str(ip).split(':')[0]}/json")
    else:
        html = urlopen("http://ipinfo.io/json")

    data = json.loads(html.read().decode('utf-8'))
    IP = data['ip']
    org = data['org']
    city = data['city']
    country = data['country']
    region = data['region']

    print('IP detail')
    print('IP : {4} \nRegion : {1} \nCountry : {2} \nCity : {3} \nOrg : {0}'.format(org, region, country, city, IP))

谢谢你的阅读


Tags: fromimportipaddgetdriverseleniumchrome
1条回答
网友
1楼 · 发布于 2024-05-04 01:08:25

我认为您遇到的问题与代码实现无关。我确信您遇到的问题与您使用免费代理有关。这些类型的代理 因存在连接问题而臭名昭著,例如与延迟相关的超时。此外,这些网站也可能是间歇性的,这意味着它们可以随时关闭。有时这些网站被滥用,因此可能会被屏蔽

您的代理是207.157.25.44:80,如下图所示

enter image description here

当我测试此代码时:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

proxy_server = '207.157.25.44:80'

chrome_options = Options()
chrome_options.add_argument(" disable-infobars")
chrome_options.add_argument("start-maximized")
chrome_options.add_argument(" disable-extensions")
chrome_options.add_argument(" disable-popup-blocking")
chrome_options.add_argument(' proxy-server=%s' % proxy_server)

# disable the banner "Chrome is being controlled by automated test software"
chrome_options.add_experimental_option("useAutomationExtension", False)
chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])

driver = webdriver.Chrome('/usr/local/bin/chromedriver', options=chrome_options)

driver.get('https://www.whatismyip.com/')

Chrome浏览器将打开,但不显示任何内容

enter image description here

如果我通过在线proxy checker服务检查地址207.157.25.44:80,我会得到好坏参半的结果

下图显示代理未响应任何查询类型(HTTP、HTTPS、SOCKS4、SOCKS5)

enter image description here

当我在5分钟后执行相同的检查时,代理在HTTP上启动,但存在延迟问题

enter image description here

如果我从free proxy website中选择了另一个代理:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

proxy_server = '47.184.133.79:3128'

chrome_options = Options()
chrome_options.add_argument(" disable-infobars")
chrome_options.add_argument("start-maximized")
chrome_options.add_argument(" disable-extensions")
chrome_options.add_argument(" disable-popup-blocking")
chrome_options.add_argument(' proxy-server=%s' % proxy_server)

# disable the banner "Chrome is being controlled by automated test software"
chrome_options.add_experimental_option("useAutomationExtension", False)
chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])

driver = webdriver.Chrome('/usr/local/bin/chromedriver', options=chrome_options)

driver.get('https://www.whatismyip.com/')

当连接到网站时,我会看到一个CloudFlare挑战页面whatismyip.

enter image description here

但是如果我在网站上尝试相同的代理nordvpn.com/what-is-my-ip,我会得到代理的IP地址

enter image description here

我强烈建议对任何免费代理IP地址进行多次测试,以查看该地址是否存在任何类型的问题。此外,您需要在代码中添加一些错误处理,以便在代理脱机时捕获问题,因为它们可以随时删除

如果您需要使用代理,我强烈建议您使用商业代理服务,因为它们比免费代理服务更可靠

相关问题 更多 >