Python 免费代理IP抓取、筛选和验证脚本
这是一个基于 requests 和 BeautifulSoup 库的 Python 脚本,它可以从多个免费代理 IP 网站获取代理 IP 列表,并对它们进行筛选和验证后,将可用的代理 IP 写入到一个文本文件中。
import requests
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor
def get_proxy_list():
proxy_list = []
urls = [
'https://www.sslproxies.org/',
'https://free-proxy-list.net/',
'https://www.us-proxy.org/',
'https://www.socks-proxy.net/',
'https://hidemy.name/en/proxy-list/',
'https://www.proxy-list.download/api/v1/get?type=http'
]
with ThreadPoolExecutor(max_workers=5) as executor:
for response in executor.map(requests.get, urls):
soup = BeautifulSoup(response.text, 'html.parser')
for tr in soup.select('table tr')[1:]:
tds = tr.select('td')
if len(tds) >= 2:
ip = tds[0].text.strip()
port = tds[1].text.strip()
proxy = f'{ip}:{port}'
proxy_list.append(proxy)
return proxy_list
def test_proxy(proxy):
try:
response = requests.get('https://httpbin.org/ip', proxies={'http': proxy, 'https': proxy}, timeout=5)
if response.status_code == 200:
print(f'[+] {proxy} is working')
return True
except:
pass
print(f'[-] {proxy} is not working')
return False
def filter_proxy_list(proxy_list):
filtered_list = []
with ThreadPoolExecutor(max_workers=5) as executor:
for proxy, result in zip(proxy_list, executor.map(test_proxy, proxy_list)):
if result:
filtered_list.append(proxy)
return filtered_list
def write_proxy_list(proxy_list, filename):
with open(filename, 'w') as f:
f.write('
'.join(proxy_list))
if __name__ == '__main__':
proxy_list = get_proxy_list()
filtered_list = filter_proxy_list(proxy_list)
write_proxy_list(filtered_list, 'proxy_list.txt')
该脚本首先定义了一个 get_proxy_list 函数,它使用了一个线程池来并发地从多个代理 IP 网站获取代理 IP 列表。然后它定义了一个 test_proxy 函数来测试代理 IP 是否可用,如果可用,则将其添加到可用代理 IP 列表中。最后,它定义了一个 write_proxy_list 函数来将可用代理 IP 列表写入到一个文本文件中。
在脚本的主函数中,我们首先调用 get_proxy_list 函数来获取代理 IP 列表,然后调用 filter_proxy_list 函数来过滤可用的代理 IP 列表。最后,我们调用 write_proxy_list 函数将可用代理 IP 列表写入到一个名为 proxy_list.txt 的文本文件中。
原文地址: https://www.cveoy.top/t/topic/ndqS 著作权归作者所有。请勿转载和采集!