Python中如何检测代理IP的匿名性

如题,求问高匿和普匿的 ip 怎么区分检测?有没有好用的网址呀,求大佬帮忙


Python中如何检测代理IP的匿名性
5 回复

要检测代理IP的匿名性,主要看它向目标服务器暴露了多少你的真实信息。简单说就是检查HTTP头里REMOTE_ADDRHTTP_VIAHTTP_X_FORWARDED_FOR这几个字段。

最直接的方法就是找个能返回这些头信息的测试网站,用代理去请求它,然后分析返回的数据。下面是个实用的示例:

import requests

def check_proxy_anonymity(proxy_url, test_url="http://httpbin.org/headers"):
    """
    检测代理IP的匿名性
    
    Args:
        proxy_url: 代理地址,如 'http://123.45.67.89:8080'
        test_url: 返回请求头信息的测试网站,默认用 httpbin.org
    
    Returns:
        str: 匿名级别 - '透明'、'匿名' 或 '高匿'
    """
    proxies = {
        'http': proxy_url,
        'https': proxy_url,
    }
    
    try:
        # 设置超时,避免卡住
        response = requests.get(test_url, proxies=proxies, timeout=10)
        headers = response.json()
        
        # 分析关键字段
        via = headers.get('headers', {}).get('Via', '')
        x_forwarded_for = headers.get('headers', {}).get('X-Forwarded-For', '')
        x_real_ip = headers.get('headers', {}).get('X-Real-Ip', '')
        
        # 判断匿名级别
        if x_forwarded_for or via or x_real_ip:
            # 有这些字段,说明代理转发了你的真实IP
            return '透明'
        elif 'proxy' in headers.get('headers', {}).get('User-Agent', '').lower():
            # 有些代理会在User-Agent里暴露自己
            return '匿名'
        else:
            # 什么都没暴露
            return '高匿'
            
    except requests.exceptions.RequestException as e:
        return f'检测失败: {str(e)}'

# 使用示例
if __name__ == "__main__":
    # 替换成你要测试的代理
    proxy = "http://your-proxy-ip:port"
    result = check_proxy_anonymity(proxy)
    print(f"代理匿名级别: {result}")

原理很简单:透明代理会把你的真实IP放在X-Forwarded-For头里;匿名代理不会暴露你的IP,但可能在ViaUser-Agent里暴露自己是代理;高匿代理什么都不暴露,看起来就像普通用户。

建议直接用httpbin.org这种现成服务来测。

啥是高匿和普匿,有啥区别?

的方法可以,但是需要科学的力量。

透明代理、匿名代理、混淆代理、高匿代理有什么区别? 可以看: https://blog.csdn.net/a19860903/article/details/47146715

据 贴的博客来看,自己写个服务,head 过去看看有没有 Proxy 相关属性就 OK 了

回到顶部