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無效!")
- 缺點(diǎn):雖然可以檢測代理ip是否有效,但是該方法只能用于檢測少量的代理ip,原因是該方法檢測速度比較慢,主要耗時(shí)的是發(fā)請求這一過程。(可以使用)
第二種
- telnet 方法。
import telnetlibtry: telnetlib.Telnet(ip, port, timeout=3) print("代理IP有效!")except: print("代理IP無效!")
缺點(diǎn):雖然該方法可以比較快速的驗(yàn)證,但是經(jīng)測試發(fā)現(xiàn)一些代理ip可以測試通過,但實(shí)際上代理ip仍然無效。(不推薦使用)
第三種
利用的http://icanhazip.com/返回的IP進(jìn)行校驗(yàn),如返回的是代理池的IP,說明代理有效,否則實(shí)際代理無效
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?
然后,我們可以定義一個(gè)函數(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
接下來,我們可以讀取包含代理的文本文件,并將可用的代理寫入另一個(gè)文件中:
# 讀取代理列表 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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python自動(dòng)操作神器PyAutoGUI的使用教程
這篇文章主要是想和大家來聊一聊Python如何利用自動(dòng)操作 GUI 神器——PyAutoGUI在桌面實(shí)現(xiàn)自動(dòng)化操作,感興趣的小伙伴可以了解一下2022-06-06使用python實(shí)現(xiàn)一個(gè)瀏覽器自動(dòng)化的腳本
最近工作中有這樣一個(gè)需求:客戶反饋在瀏覽器操作過程中,重復(fù)流程操作太頻繁,能不能讓瀏覽器自動(dòng)操作完成?所以本文給大家介紹了如何使用python實(shí)現(xiàn)一個(gè)瀏覽器自動(dòng)化的腳本,感興趣的朋友可以參考下2024-04-04Python中的錯(cuò)誤處理與調(diào)試技巧分享
在軟件開發(fā)過程中,錯(cuò)誤是不可避免的,無論是在開發(fā)初期還是在項(xiàng)目后期,程序都可能會(huì)遇到各種各樣的錯(cuò)誤,本文將深入探討 Python 中的錯(cuò)誤處理機(jī)制、常見錯(cuò)誤類型及其處理方法,并介紹一些實(shí)用的調(diào)試技巧,以提高開發(fā)效率和代碼質(zhì)量,需要的朋友可以參考下2025-01-01