Chrome headless 忽略系统代理

2023-12-03

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

https://youtu.be/MIZjHKCVr1s

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

code :

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)

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


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

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

我已经测试了你的代码并且它有效。也许通过公共代理提供您的完整代码可能会帮助其他人完全按照您所看到的方式复制您的工作。我只能猜测您如何使用代理,因此我的代码可能会有所不同。我也在用windows

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

最后,Chrome 和 Firefox 现在的测试版提供了无头支持。我相信 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")

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

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

希望这有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chrome headless 忽略系统代理 的相关文章

随机推荐