2

编辑:这是演示问题的 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)

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

4

1 回答 1

5

这可能有很多原因:如果我不得不猜测它是IP泄漏。低质量的代理不会掩盖您在各种网站上的 ip。whoer.net 是一个测试 ip 泄漏的好网站。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")

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

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

希望这会有所帮助。

于 2017-08-31T10:01:53.883 回答