欢迎访问宙启技术站
智能推送

利用Python编写的PROXY_TYPE_SOCKS4代理生成器

发布时间:2023-12-12 09:28:52

PROXY_TYPE_SOCKS4是代理服务器类型的一种,通过它可以在网络请求中使用代理服务器。在Python中,我们可以使用第三方库requests来发送HTTP请求,并设置代理服务器。下面是一个利用Python编写的PROXY_TYPE_SOCKS4代理生成器的示例代码。

import requests
from stem import Signal
from stem.control import Controller

def set_socks_proxy(proxy_host, proxy_port):
    proxy = f'socks4://{proxy_host}:{proxy_port}'
    proxy_dict = {
        'http': proxy,
        'https': proxy
    }
    return proxy_dict

def renew_tor_ip():
    with Controller.from_port(port=9051) as controller:
        controller.authenticate()
        controller.signal(Signal.NEWNYM)

def make_request(url, proxy_dict):
    try:
        response = requests.get(url, proxies=proxy_dict, timeout=5)
        if response.status_code == 200:
            return True
        else:
            return False
    except requests.exceptions.RequestException:
        return False

def test_proxy(proxy_host, proxy_port, test_url):
    proxy_dict = set_socks_proxy(proxy_host, proxy_port)
    result = make_request(test_url, proxy_dict)
    if result:
        print(f"Proxy: {proxy_host}:{proxy_port} is working.")
    else:
        print(f"Proxy: {proxy_host}:{proxy_port} is not working.")

test_url = 'https://www.example.com'
proxies = [
    ('127.0.0.1', '9050'), # Tor default socks proxy
    ('123.45.67.89', '54321'),
    ...
]

for proxy in proxies:
    test_proxy(proxy[0], proxy[1], test_url)
    renew_tor_ip() # Renew IP if using Tor

以上代码中,set_socks_proxy函数会根据传入的代理服务器地址和端口号设置代理字典;renew_tor_ip函数会发送一个信号给Tor控制器,要求重新获取一个新的IP地址(如果使用的是Tor代理);make_request函数会发送一个GET请求并返回请求结果;test_proxy函数会测试代理服务器是否可用,并打印出测试结果。

在实际使用时,可以将代理服务器的地址和端口号存储在一个列表中,循环遍历测试每个代理服务器的可用性。根据需要,可以使用Tor代理服务器或其他PROXY_TYPE_SOCKS4代理服务器。