環(huán)境要求 :
- Python 2.7
- Requests庫
pip install requests
- UrlLib3庫
pip install urllib3
- Socks庫
pip install urllib3[socks]
驗證腳本 :
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import threading
import requests
# config-start
testUrl = "https://www.so.com/" # 利用了360搜索
keyWord = "360"
timeout = 5 # 設(shè)置超時
threadNumber = 50 # 設(shè)置線程數(shù)
proxiesFileName = "proxies.txt"
successFileName = "success.txt"
# config-end
def testOnline(ip,port,protocol):
'''
測試HTTP代理是否可用
利用IP138的接口 , 在響應(yīng)的頁面中尋找本機IP , 如果找到 , 則說明代理可以成功連接
'''
global successFileName
global testUrl
global timeout
global keyWord
if protocol == "HTTPS":
proxies = {"http":"http://"+ip+":"+port,"https":"http://"+ip+":"+port }
elif protocol == "SOCKS5":
proxies = {"http":"socks5://"+ip+":"+port,"https":"socks5://"+ip+":"+port}
else: # 不指定協(xié)議時使用HTTP協(xié)議
proxies = {"http":"http://"+ip+":"+port,"https":"http://"+ip+":"+port}
try:
content=requests.get(testUrl,proxies=proxies,timeout=timeout).text.encode('UTF-8')
if keyWord in content:
print ip+":"+port+"@"+protocol
file=open(successFileName,"a+")
file.write(ip+":"+port+"@"+protocol+"\n")
file.close()
else:
print "Proxy Error..."
except Exception as e:
# print e
print "NetWork Error..."
class myThread (threading.Thread):
def __init__(self, ip, port, protocol):
threading.Thread.__init__(self)
self.ip = ip
self.port = port
self.protocol = protocol
def run(self):
testOnline(self.ip,self.port,self.protocol)
proxies=open(proxiesFileName,"r")
threads = [] # 線程池
for proxy in proxies:
line = proxy[0:-1]
ip = line.split(":")[0] # 獲取IP
port = line.split(":")[1].split("@")[0] # 獲取端口
protocol = line.split(":")[1].split("@")[1].split("#")[0]
threads.append(myThread(ip,port,protocol))
for t in threads:
t.start()
while True:
if(len(threading.enumerate())<threadNumber):
break