import sys
import threading
from bs4 import BeautifulSoup
import urllib.request
import requests
import os
lock = threading.RLock()#创建锁
def getIp(i):
#创建文件
b=os.getcwd()#当前程序路径
file_handle = open(b + '/ip.txt',mode='a') #打开文件
url = "https://www.89ip.cn/index_{}.html".format(i)
response = urllib.request.urlopen(url)
html = response.read().decode('utf-8')
soup = BeautifulSoup(html, 'html.parser')
tr = soup.select('div.layui-row.layui-col-space15 > div.layui-col-md8 > div > div.layui-form > table > tbody > tr')
for trs in tr:
thisIP = trs.select('td:nth-child(1)')[0].get_text().strip() + ':' + trs.select('td:nth-child(2)')[
0].get_text().strip()
proxy = {
'http': 'http://' + thisIP,
'https': 'https://' + thisIP
}
head = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
'Connection': 'keep-alive'}
p = None
try:
p = requests.get('http://icanhazip.com', headers=head, proxies=proxy)
print(p.text)
print(thisIP + '====>代理成功')
if lock.acquire():#加锁
file_handle.write(thisIP + '\n') # 写入文本
file_handle.flush()
lock.release()#解锁
except:
print(thisIP + '---->失败!')
file_handle.close()#关闭文件
if __name__ == '__main__':
# 设置多线程
for i in range(1,205,1):
tp_Thread = threading.Thread(target=getIp,args=(i,))
tp_Thread.start()
本文只用于学习,切勿用于非法用途,非法使用一系列后果自负