这是一个基于 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 的文本文件中。

Python 免费代理IP抓取、筛选和验证脚本

原文地址: https://www.cveoy.top/t/topic/ndqS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录