You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用requests/Selenium爬虫时,如何确认当前使用的是proxy-IP?

验证Selenium代理IP在目标SPA站点的有效性

核心误区纠正

你用requests查询IP的思路无效,因为requests和Selenium是完全独立的请求会话——前者的代理配置和你给浏览器设置的代理没有关联,自然查不到Selenium当前使用的IP。

直接针对目标站点的验证方案

1. 从目标站点页面/接口提取IP信息

很多站点会在页面DOM元素、用户中心或接口响应中返回当前访问IP,直接用Selenium抓取验证:

from selenium import webdriver

# 已配置代理的浏览器对象
driver = webdriver.Chrome(options=your_proxy_options)
driver.get("目标站点URL")

# 示例:定位页面中显示IP的元素(需根据目标站点实际结构调整)
try:
    site_detected_ip = driver.find_element("css selector", ".user-ip-display").text
    print(f"目标站点识别的IP: {site_detected_ip}")
    print("代理生效" if site_detected_ip == "你的代理IP" else "代理未生效")
except:
    print("未找到页面中显示IP的元素,可尝试检查接口响应")

2. 用DevTools拦截目标站点请求,查看真实请求IP

通过Selenium的Chrome DevTools API监听请求,查看目标站点实际接收到的IP(或请求头中的X-Forwarded-For等字段):

from selenium import webdriver

driver = webdriver.Chrome(options=your_proxy_options)
# 启用网络监听
driver.execute_cdp_cmd("Network.enable", {})

def track_request_details(request):
    target_domain = "目标站点域名"
    if target_domain in request["request"]["url"]:
        print(f"请求目标: {request['request']['url']}")
        # 查看站点记录的代理IP(部分站点会通过X-Forwarded-For透传)
        if "X-Forwarded-For" in request["request"]["headers"]:
            print(f"X-Forwarded-For: {request['request']['headers']['X-Forwarded-For']}")
        # 查看请求的真实远程IP
        if "remoteIPAddress" in request:
            print(f"站点接收到的IP: {request['remoteIPAddress']}")

# 绑定请求监听事件
driver.add_cdp_listener("Network.requestWillBeSent", track_request_details)

driver.get("目标站点URL")

3. 复用代理配置,模拟目标站点关键请求

提取Selenium中目标站点的核心接口,用requests配置相同代理发起请求,直接验证站点识别的IP:

import requests

# 与Selenium完全一致的代理配置
proxies = {
    "http": "http://你的代理IP:端口",
    "https": "http://你的代理IP:端口"
}

# 请求目标站点的核心接口(需从Selenium抓包获取)
response = requests.get("目标站点核心接口URL", proxies=proxies)
# 解析接口返回的IP信息(需根据接口响应结构调整)
response_data = response.json()
if "visitor_ip" in response_data:
    print(f"接口识别的IP: {response_data['visitor_ip']}")
    print("代理生效" if response_data["visitor_ip"] == "你的代理IP" else "代理未生效")

间接验证的优化方案

如果用IP查询站点验证,必须通过Selenium打开该站点(而非独立requests请求),确保使用的是浏览器的代理会话:

driver.get("https://api.ipify.org")
current_session_ip = driver.find_element("tag name", "body").text
print(f"当前浏览器会话的IP: {current_session_ip}")
print("代理在浏览器中生效" if current_session_ip == "你的代理IP" else "代理未生效")

内容的提问来源于stack exchange,提问作者Vsevolod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 01:27:51