利用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代理服务器。
