通过Python旋转Shadowsocks代理

2024-05-23 17:33:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python代码,需要使用我设置的各种ShadowSocks代理服务器来使用这些服务器的IP。在

例如,我想用:

1.1.1.1:5678
2.2.2.2:5678
3.3.3.3:5678

也就是说,所有这些服务器都有相同的远程端口,本地端口都是1080。在

我的首选是让3个代理随机旋转,这样每当我发送urlopen()请求(在urllib2中)时,我的代码会随机连接到其中一个代理并通过该代理发送请求,当请求完成时断开连接。在

IP可以是硬编码的,也可以存储在一些配置文件中。在

现在的问题是,我发现的所有在线示例似乎都要求预先建立连接,Python代码应该只使用上面的任何内容localhost:1080代替积极建立联系。在

我只是想知道是否有人能帮助我在代码中实现这一点。在

谢谢!在


Tags: 端口代码ip服务器localhost示例代理内容
1条回答
网友
1楼 · 发布于 2024-05-23 17:33:00

如果你看一下urllib2的source,你会发现当安装了一个默认的开启器时,它实际上只接受一个带有open方法的对象。所以您只需要创建一个对象,它的open方法返回一个随机开启器。类似以下(未经测试)的方法应该有效:

import urllib2
import random

class RandomOpener(object):
    def __init__(self, ip_list)
        self.ip_list = ip_list

    def open(self, *args, **kwargs):
        proxy = random.choice(self.ip_list)
        handler = urllib2.ProxyHandler({'http': 'http://' + proxy})
        opener = urllib2.build_opener(handler)
        return opener(*args, **kwargs)

my_opener = RandomOpener(['1.1.1.1:5678',
                          '2.2.2.2:5678',
                          '3.3.3.3:5678'])

urllib2.install_opener(my_opener)

相关问题 更多 >