Python爬虫中代理IP本地可用但部署到服务器上不可用的问题如何解决?
一个简单的爬虫,二三十分钟爬一次一个美国网站固定页面的一个数值,无需登录,网站最近才加上的反爬,限制了同一 IP 请求的次数
代码里 header 信息齐全,网站必须美国 IP 请求,所以找了 100 个免费的美国高匿代理,user-agent 也搞了 10 多个,本地跑测试,IP 都可用,程序跑起来一切正常,跑 3 个小时一个 403 没有,但是部署到搬瓦工美国的服务器上,能有三分之一的代理 IP 请求报 403 Forbidden
我把报错的 IP 都存下来,放到本地跑,全部都可用,都能爬到数,然后再弄到服务器上,就是 403,有哪位遇到过这种情况吗,求帮助
python3.6 写的很直白简单的爬虫,搬瓦工洛杉矶的服务器
Python爬虫中代理IP本地可用但部署到服务器上不可用的问题如何解决?
这个问题常见,核心是网络环境和配置差异导致的。
首先,直接上诊断和解决方案的代码。在你的爬虫脚本里,部署后立刻添加以下测试块来定位问题:
import requests
import socket
def test_proxy_connection(proxy_url, test_url="http://httpbin.org/ip"):
"""测试代理服务器连通性"""
proxies = {
"http": proxy_url,
"https": proxy_url,
}
try:
# 1. 先测试本地DNS和网络
print("测试服务器本地网络...")
socket.create_connection(("httpbin.org", 80), timeout=5)
print("✓ 服务器外网连通正常")
# 2. 测试代理连接
print(f"\n测试代理连接 {proxy_url}...")
response = requests.get(test_url, proxies=proxies, timeout=10)
if response.status_code == 200:
print(f"✓ 代理连接成功,返回IP: {response.json()['origin']}")
return True
else:
print(f"✗ 代理返回异常状态码: {response.status_code}")
return False
except requests.exceptions.ProxyError as e:
print(f"✗ 代理服务器错误: {e}")
print("可能原因:代理服务器拒绝连接、需要认证、或已失效")
except requests.exceptions.ConnectTimeout:
print("✗ 连接代理服务器超时")
print("可能原因:代理IP被服务器网络屏蔽、端口不通")
except requests.exceptions.SSLError:
print("✗ SSL证书错误")
print("尝试添加 verify=False 参数(仅测试用)")
except Exception as e:
print(f"✗ 未知错误: {type(e).__name__}: {e}")
return False
# 使用示例
if __name__ == "__main__":
# 替换为你的代理地址
proxy = "http://123.45.67.89:8080"
# 如果需要认证
# proxy = "http://username:password@123.45.67.89:8080"
test_proxy_connection(proxy)
主要问题和解决方案:
-
网络环境差异:服务器可能禁止某些IP段或端口。让服务器提供商开放相应端口。
-
代理需要认证:有些代理在服务器网络环境下需要额外认证。确保代理字符串包含用户名密码:
http://user:pass@ip:port -
超时设置:服务器到代理的网络可能较慢,增加timeout值:
response = requests.get(url, proxies=proxies, timeout=15) -
DNS解析问题:服务器可能无法解析代理域名。尝试使用代理IP而非域名。
-
代理类型不匹配:明确指定代理类型:
proxies = { "http": "http://proxy_ip:port", "https": "http://proxy_ip:port", # 注意很多HTTPS代理也用http协议 } -
服务器防火墙:检查服务器安全组/防火墙设置,确保出站流量未被限制。
部署前在服务器上直接运行测试脚本,看具体报错信息再针对性解决。
总结:在服务器上跑个网络测试脚本,对比本地环境差异。
在 vps 上试下代理 ip 的连通性

