基于requests
库(简单的HTTP请求检测)
首先,需要安装requests
库。如果没有安装,可以在命令行中使用pip install requests
进行安装。
以下是一个简单的函数来检测代理IP是否有效:
import requests
def check_proxy(proxy):
try:
proxies = {
"http": "http://" + proxy,
"https": "https://" + proxy
}
response = requests.get("https://www.example.com", proxies = proxies, timeout = 5)
if response.status_code == 200:
return True
else:
return False
except requests.RequestException:
return False
在上述代码中:
定义了一个check_proxy函数,它接受一个代理IP(格式为ip:port)作为参数。
在函数内部,构建了一个proxies字典,用于设置HTTP和HTTPS协议的代理。
然后尝试使用代理IP访问一个示例网站(这里是https://www.example.com),设置超时时间为5秒。
如果响应状态码为200,说明代理IP能够成功访问网站,返回True;否则,捕获可能出现的请求异常(如连接超时、代理不可用等)并返回False。
基于socket库(底层的TCP连接检测)
socket库是Python标准库中用于网络通信的基础库。
import socket
def check_proxy_socket(proxy):
try:
ip, port = proxy.split(":")
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5)
result = sock.connect_ex((ip, int(port)))
if result == 0:
return True
else:
return False
except (ValueError, socket.error):
return False
这里定义了check_proxy_socket函数,用于检测代理IP。
首先从代理IP字符串中分离出IP地址和端口号。
创建一个TCP套接字sock,并设置超时时间为5秒。
使用connect_ex方法尝试连接代理服务器。如果返回值为0,表示连接成功,返回True;否则返回False。同时,捕获可能出现的ValueError(例如代理IP格式错误)和socket.error异常并返回False。
仅供参考,下一篇讲述Java语言检测代理ip的方式,感谢审核大大,欢迎交流!