编辑:以下是展示问题的YouTube视频:
我使用--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)
如果我不使用少头旗。 它显示系统代理的IP,但如果使用它,它会显示我的真实IP。
答案 0 :(得分:3)
可能有很多原因: 如果我不得不猜测它是Ip泄漏。低质量代理不会掩盖您在各种网站上的IP。一个测试Ip泄漏的好网站是whoer.net。 IP地址只是一个因素,您还必须考虑浏览器指纹识别和用户代理欺骗。理想情况下,您希望whoer.net拥有100%的匿名评级。
另外,请确保安装了最新的Chrome和Firefox。
我已经测试了你的代码并且它有效。也许提供公共代理的完整代码可能会帮助其他人完全按照您的意愿复制您的工作。我只能猜测你是如何使用代理的,所以我的代码可能会有所不同。我也在使用Windows
据我所知,您提供的代码似乎没有任何问题,所以我保证您的IP通过其他方式泄漏。查看浏览器指纹识别并禁用webrtc并仔细查看whoer.net。
最后,Chrome和Firefox现在在测试版中都有无头支持。我相信这一直是Linux的情况。 Mac我不确定。
或者,如果你想使用无头浏览器试试幻影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直到它们工作。我不认为有必要更改代理的网络设置,只需使用上面的代码即可。
希望这有用。