python,检测代理ip是否有效

文章目录

  • python,检测代理ip是否有效
    • 测试环境
    • 测试方法
      • 第一种
      • 第二种
      • 第三种

python,检测代理ip是否有效

测试环境

  • python3.6 、window10系统

测试方法

第一种

  • 使用requests模块。
  • 使用requests.get() 发请求,根据其返回的网页内容进行判断,代理ip是否有效。
import requests

proxies = {'http': '120.236.128.201:8060',
           'https': '120.236.128.201:8060'
           }
url = "http://www.baidu.com/"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
try:
    response = requests.get(url, headers=headers, proxies=proxies, timeout=5)
    print(response.text)
except Exception as e:
    print(f"请求失败,代理IP无效!{e}")
else:
    print("请求成功,代理IP有效!")
  • 缺点:虽然可以检测代理ip是否有效,但是该方法只能用于检测少量的代理ip,原因是该方法检测速度比较慢,主要耗时的是发请求这一过程。(可以使用)

第二种

  • telnet 方法。
import telnetlib
try:
    telnetlib.Telnet(ip, port, timeout=3)
    	print("代理IP有效!")
except:
        print("代理IP无效!")
  • 缺点:虽然该方法可以比较快速的验证,但是经测试发现一些代理ip可以测试通过,但实际上代理ip仍然无效。(不推荐使用)

第三种

  • 利用的http://icanhazip.com/返回的IP进行校验,如返回的是代理池的IP,说明代理有效,否则实际代理无效
def check_proxy(ip, port):
    """第二种:"""
    try:
        # 设置重连次数
        requests.adapters.DEFAULT_RETRIES = 3
        # IP = random.choice(IPAgents)
        proxy = f"http://{ip}:{port}"
        # thisIP = "".join(IP.split(":")[0:1])
        # print(thisIP)
        res = requests.get(url="http://icanhazip.com/", timeout=2, proxies={"http": proxy})
        proxyIP = res.text
        if (proxyIP == proxy):
            print("代理IP:'" + proxyIP + "'有效!")
            return True
        else:
            print("2代理IP无效!")
            return False
    except:
        print("1代理IP无效!")
        return False
  • 推荐使用。

你可能感兴趣的:(爬虫,反爬虫,python,代理ip)