Chrome headless 忽略系统代理

rjp*_*998 2 python proxy selenium google-chrome google-chrome-headless

编辑:这是演示该问题的 YouTube 视频:

https://youtu.be/MIZjHKCVr1s

我正在使用 --headless 标志运行带有 chrome 的 selenium,但显然使用 --headless 似乎忽略了系统代理。我之前在 mac 上测试过它没有绕过代理,但在我的 mac 上的 Windows 10 VM 上它似乎绕过了代理。

代码 :

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
options.add_argument('--hide-scrollbars')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(chrome_options = options)

driver.get('https://wtfismyip.com')
print(driver.find_element_by_tag_name('body').text)
Run Code Online (Sandbox Code Playgroud)

如果我不使用 head less 标志。它显示系统代理的 IP,但如果使用它,它会显示我的真实 IP。

小智 5

这可能有多种原因: 如果我不得不猜测是 IP 泄漏。低质量的代理不会掩盖您在各种网站上的 ip。一个测试IP泄漏的好网站是whoer.net。IP地址只是一个因素,还必须考虑浏览器指纹识别和用户代理欺骗。理想情况下,您希望 whoer.net 具有 100% 匿名评级。

此外,请确保您安装了最新的 Chrome 和 Firefox。

我已经测试了您的代码并且可以正常工作。也许为您的完整代码提供公共代理可能会帮助其他人完全按照您的看法复制您的工作。我只能猜测你是如何使用代理的,所以我的代码可能会有所不同。我也在用windows

据我所知,您提供的代码似乎没有任何问题,因此我假设您的 IP 是通过其他方式泄漏的。查看浏览器指纹并禁用 webrtc 并仔细查看 whoer.net。

最后,Chrome 和 Firefox 现在在 beta 版本中提供无头支持。我相信 Linux 一直都是这种情况。Mac 我不确定。

或者,如果您想使用无头浏览器,请尝试使用 phantom Js。虽然这正在被我上面提到的内容所取代。我相信有其他方法可以进行无头浏览,而无需安装较新版本的 Chrome 和 Firefox,尽管我不知道如何。

编辑:以下是如何在 Chrome 驱动程序中使用代理的示例:

from selenium import webdriver

PROXY = "23.23.23.23:2323" # IP:PORT or HOST:PORT

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=%s' % PROXY)

chrome = webdriver.Chrome(chrome_options=chrome_options)
chrome.get("http://whatismyipaddress.com")
Run Code Online (Sandbox Code Playgroud)

我在 Selenium 中尝试过这个,据我所知它有效。

这是公共代理列表。 https://free-proxy-list.net/。请注意,其中有很多不起作用,所以我不得不滚动 3 直到它们起作用。我认为没有必要更改代理的网络设置,只需使用上面的代码即可。

希望这是有帮助的。