python檢測代理ip是否有效問題
更新時間:2023年08月12日 09:29:48 作者:小胖_@
這篇文章主要介紹了python檢測代理ip是否有效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
python檢測代理ip是否有效
測試環(huán)境
python3.6 、window10系統(tǒng)
測試方法
第一種
- 使用requests模塊。
- 使用requests.get() 發(fā)請求,根據(jù)其返回的網(wǎng)頁內(nèi)容進(jìn)行判斷,代理ip是否有效。
import telnetlib
try:
telnetlib.Telnet(ip, port, timeout=3)
print("代理IP有效!")
except:
print("代理IP無效!")- 缺點:雖然可以檢測代理ip是否有效,但是該方法只能用于檢測少量的代理ip,原因是該方法檢測速度比較慢,主要耗時的是發(fā)請求這一過程。(可以使用)
第二種
- telnet 方法。
import telnetlibtry: telnetlib.Telnet(ip, port, timeout=3) print("代理IP有效!")except: print("代理IP無效!")
缺點:雖然該方法可以比較快速的驗證,但是經(jīng)測試發(fā)現(xiàn)一些代理ip可以測試通過,但實際上代理ip仍然無效。(不推薦使用)
第三種
利用的http://icanhazip.com/返回的IP進(jìn)行校驗,如返回的是代理池的IP,說明代理有效,否則實際代理無效
def check_proxy(ip, port): """第二種:""" try: # 設(shè)置重連次數(shù) 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 Falsedef check_proxy(ip, port):
"""第二種:"""
try:
# 設(shè)置重連次數(shù)
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代理是否可用
首先,我們需要導(dǎo)入必要的庫:
import requests import time?
然后,我們可以定義一個函數(shù)來檢測代理是否可用:
def check_proxy(proxy):
? ? # 使用代理發(fā)起請求,如果返回狀態(tài)碼為200,說明代理可用
? ? try:
? ? ? ? # 這里替換為你要請求的目標(biāo)網(wǎng)站
? ? ? ? response = requests.get('http://www.baidu.com', proxies={"http": proxy, "https": proxy}, timeout=5)
? ? ? ? if response.status_code == 200:
? ? ? ? ? ? return True
? ? except Exception:
? ? ? ? pass
? ? return False接下來,我們可以讀取包含代理的文本文件,并將可用的代理寫入另一個文件中:
# 讀取代理列表
with open('proxies.txt', 'r') as f:
? ? proxy_list = f.read().splitlines()
# 創(chuàng)建用于保存可用代理的列表
valid_proxies = []
# 遍歷代理列表,檢測代理是否可用
for proxy in proxy_list:
? ? if check_proxy(proxy):
? ? ? ? valid_proxies.append(proxy)
# 將可用代理寫入文件
with open('valid_proxies.txt', 'w') as f:
? ? for proxy in valid_proxies:
? ? ? ? f.write(proxy + '\n')總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

