Python Selenium代理爬虫问题:真实IP仍被网站识别
Selenium Firefox代理仍暴露真实IP的修复方案
问题根源及对应修复:
未覆盖HTTPS协议代理配置
你的代码仅配置了HTTP代理,但HTTPS请求(如访问google.com)会绕过代理直接走默认网络,导致真实IP暴露。需补充HTTPS及共用代理的配置:# 补充HTTPS代理设置 profile.set_preference("network.proxy.https", proxy) profile.set_preference("network.proxy.https_port", port) profile.set_preference("network.proxy.ssl", proxy) profile.set_preference("network.proxy.ssl_port", port) # 让所有协议共用同一代理 profile.set_preference("network.proxy.share_proxy_settings", True)WebRTC泄露真实IP
Firefox默认启用的WebRTC功能会在后台获取本地真实IP,不受代理影响。需添加以下配置禁用该功能:profile.set_preference("media.peerconnection.enabled", False) profile.set_preference("media.peerconnection.use_document_iceservers", False) profile.set_preference("media.peerconnection.ice.single_host_traversal_only", True)改用新版本Selenium推荐的配置方式
旧版的FirefoxProfile已被Selenium 4.x弃用,建议使用FirefoxOptions进行配置,兼容性更好:from selenium import webdriver from selenium.webdriver.firefox.options import Options from selenium.webdriver.common.keys import Keys def proxy_addresses(proxy, user_agent, port): options = Options() # 代理核心配置 options.set_preference('network.proxy.type', 1) options.set_preference("network.proxy.http", proxy) options.set_preference("network.proxy.http_port", port) options.set_preference("network.proxy.https", proxy) options.set_preference("network.proxy.https_port", port) options.set_preference("network.proxy.share_proxy_settings", True) # 禁用WebRTC防泄露 options.set_preference("media.peerconnection.enabled", False) # User-Agent设置 if user_agent: options.set_preference("general.useragent.override", user_agent) # 禁用缓存 options.set_preference("browser.cache.disk.enable", False) options.set_preference("browser.cache.memory.enable", False) options.set_preference("browser.cache.offline.enable", False) options.set_preference("network.http.use-cache", False) # 指定Firefox路径 options.binary_location = r'C:\Program Files\Mozilla Firefox\firefox.exe' # 初始化驱动 driver = webdriver.Firefox(options=options, executable_path=r'C:\Users\dharm\geckodriver-v0.33.0-win64\geckodriver.exe') # 验证IP driver.get("https://google.com") search_box = driver.find_element_by_name("q") search_box.send_keys("what is my IP") search_box.send_keys(Keys.RETURN)确认代理类型
必须使用高匿代理,透明代理或普通匿名代理会在请求头中携带真实IP信息,无法隐藏你的真实地址。
内容的提问来源于stack exchange,提问作者Dharmesh
相关产品推荐
相关产品推荐

