Python Selenium脚本代理运行问题求助
嘿,我来帮你搞定Selenium爬虫不走代理的问题!你看到的提示说明请求确实是从你的真实IP发出的,接下来我会一步步教你怎么配置代理,让爬虫通过代理通道发送请求。
一、Chrome浏览器配置代理
Chrome的配置比较直接,通过ChromeOptions添加代理参数就行:
- 先准备好你的代理地址,格式得是
http://ip:端口、https://ip:端口或者socks5://ip:端口(根据代理类型选) - 创建
ChromeOptions对象,添加--proxy-server参数指定代理 - 把配置好的Options传入ChromeDriver
给你个现成的代码示例,记得替换成自己的代理信息:
from selenium import webdriver from selenium.webdriver.chrome.options import Options # 替换成你的代理IP和端口 proxy_address = "http://123.45.67.89:8080" # 配置Chrome选项 chrome_options = Options() chrome_options.add_argument(f'--proxy-server={proxy_address}') # 启动浏览器 driver = webdriver.Chrome(options=chrome_options) # 访问代理检测页面验证 driver.get("https://your-proxy-check-url.com") # 打印页面内容看是否显示代理IP print(driver.page_source) driver.quit()
二、Firefox浏览器配置代理
Firefox需要用到Proxy对象来设置代理,步骤如下:
from selenium import webdriver from selenium.webdriver.firefox.options import Options from selenium.webdriver.common.proxy import Proxy, ProxyType # 配置代理信息 proxy = Proxy() proxy.proxy_type = ProxyType.MANUAL proxy.http_proxy = "123.45.67.89:8080" # HTTP代理 proxy.ssl_proxy = "123.45.67.89:8080" # HTTPS代理,和HTTP可以一致也可以不同 # 配置Firefox选项 firefox_options = Options() firefox_options.proxy = proxy # 启动浏览器 driver = webdriver.Firefox(options=firefox_options) driver.get("https://your-proxy-check-url.com") print(driver.page_source) driver.quit()
三、带用户名密码的代理怎么处理?
如果你的代理需要账号密码认证,Chrome可以通过注入JS脚本的方式自动完成认证:
from selenium import webdriver from selenium.webdriver.chrome.options import Options proxy = "http://123.45.67.89:8080" proxy_user = "your_username" proxy_pwd = "your_password" chrome_options = Options() chrome_options.add_argument(f'--proxy-server={proxy}') driver = webdriver.Chrome(options=chrome_options) # 注入认证脚本,自动完成代理登录 auth_js = f""" (function() {{ var xmlhttp = new XMLHttpRequest(); xmlhttp.open('GET', 'https://your-proxy-check-url.com', false, '{proxy_user}', '{proxy_pwd}'); xmlhttp.send(); }})(); """ driver.execute_script(auth_js) # 现在访问页面就会走代理了 driver.get("https://your-proxy-check-url.com") print(driver.page_source) driver.quit()
四、几个容易踩的坑
- 代理格式要正确:必须带上协议头(http/https/socks5),不能只写
ip:端口,否则配置不会生效 - 先验证代理可用性:先手动在浏览器设置这个代理,访问检测页面确认能正常使用,再写到代码里
- 网络环境限制:如果是公司内网,可能会屏蔽外部代理,导致连接失败,这种情况得找网管确认
- 无头模式不影响:如果用无头模式(比如
chrome_options.add_argument('--headless=new')),代理配置完全一样,不用额外修改
按照上面的方法配置后,再访问你的检测页面,应该就能看到请求来自代理IP的提示啦!
内容的提问来源于stack exchange,提问作者SIM
相关产品推荐
相关产品推荐

