Python中如何检测代理IP的匿名性
如题,求问高匿和普匿的 ip 怎么区分检测?有没有好用的网址呀,求大佬帮忙
Python中如何检测代理IP的匿名性
5 回复
要检测代理IP的匿名性,主要看它向目标服务器暴露了多少你的真实信息。简单说就是检查HTTP头里REMOTE_ADDR、HTTP_VIA、HTTP_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,但可能在Via或User-Agent里暴露自己是代理;高匿代理什么都不暴露,看起来就像普通用户。
建议直接用httpbin.org这种现成服务来测。
啥是高匿和普匿,有啥区别?
的方法可以,但是需要科学的力量。
透明代理、匿名代理、混淆代理、高匿代理有什么区别? 可以看: https://blog.csdn.net/a19860903/article/details/47146715
据 贴的博客来看,自己写个服务,head 过去看看有没有 Proxy 相关属性就 OK 了

