Proxy 如何同时使用不同的IP为Scrapy运行多个Tor/Privoxy流程?

Proxy 如何同时使用不同的IP为Scrapy运行多个Tor/Privoxy流程?,proxy,scrapy,tor,privoxy,Proxy,Scrapy,Tor,Privoxy,有人能告诉我怎么做吗? 我想通过privoxy为我的scrapy项目同时运行多个TOR。。。 每个人都应该有不同的ip地址。首先,对不起,我的英语不好,因为它不是我的母语(我是俄语)。 我在尝试设置tor和privoxy的多个实例时遇到了许多“问题”,这样每个实例都可以为我的scrapy使用不同的ip。 我会告诉你怎么做的 我将在Kali Linux 2.0上工作 我还将以root用户身份工作 第一步。获取tor和privoxy: apt-get install tor apt-get inst

有人能告诉我怎么做吗? 我想通过privoxy为我的scrapy项目同时运行多个TOR。。。
每个人都应该有不同的ip地址。

首先,对不起,我的英语不好,因为它不是我的母语(我是俄语)。 我在尝试设置tor和privoxy的多个实例时遇到了许多“问题”,这样每个实例都可以为我的scrapy使用不同的ip。 我会告诉你怎么做的

我将在Kali Linux 2.0上工作 我还将以root用户身份工作

第一步。获取tor和privoxy:

apt-get install tor
apt-get install privoxy
第二步。制作复制品

cp /var/lib/tor -r /var/lib/tor2
cp /var/lib/tor -r /var/lib/tor3
cp /var/lib/tor -r /var/lib/tor4
cp /etc/tor/torrc torrc2
cp /etc/tor/torrc torrc3
cp /etc/tor/torrc torrc4
第三步。制作托尔克复制品

cp /var/lib/tor -r /var/lib/tor2
cp /var/lib/tor -r /var/lib/tor3
cp /var/lib/tor -r /var/lib/tor4
cp /etc/tor/torrc torrc2
cp /etc/tor/torrc torrc3
cp /etc/tor/torrc torrc4
第四步。现在我们要编辑每个TORC文件,您可以删除其中的所有内容并输入以下配置:

SocksPort 9050 (9060, 9070, 9080)
ControlPort 9051 (9061, 9071, 9081)
DataDirectory /var/lib/tor (tor2, tor3, tor4)
第五步。让我们测试一切是否正常,让我们打开4个终端,在每个人中启动tor,如下所示:

Terminal 1: tor -f /etc/tor/torrc
Terminal 2: tor -f /etc/tor/torrc2
Terminal 3: tor -f /etc/tor/torrc3
Terminal 4: tor -f /etc/tor/torrc4
curl --proxy socks5h://localhost:9050 http://ipinfo.io/ip
curl --proxy socks5h://localhost:9060 http://ipinfo.io/ip
curl --proxy socks5h://localhost:9070 http://ipinfo.io/ip
curl --proxy socks5h://localhost:9080 http://ipinfo.io/ip
start-stop-daemon --start --exec /usr/sbin/privoxy --pidfile /var/run/privoxy.pid -- --user root /etc/privoxy/config 
start-stop-daemon --start --exec /usr/sbin/privoxy2 --pidfile /var/run/privoxy2.pid -- --user root /etc/privoxy2/config 
start-stop-daemon --start --exec /usr/sbin/privoxy3 --pidfile /var/run/privoxy3.pid -- --user root /etc/privoxy3/config 
start-stop-daemon --start --exec /usr/sbin/privoxy4 --pidfile /var/run/privoxy4.pid -- --user root /etc/privoxy4/config 
现在打开一个新的终端,让我们卷曲这个站点“http://ipinfo.io/ip“,它会给你 我们拥有我们的知识产权。 每个任务大纲的命令如下:

Terminal 1: tor -f /etc/tor/torrc
Terminal 2: tor -f /etc/tor/torrc2
Terminal 3: tor -f /etc/tor/torrc3
Terminal 4: tor -f /etc/tor/torrc4
curl --proxy socks5h://localhost:9050 http://ipinfo.io/ip
curl --proxy socks5h://localhost:9060 http://ipinfo.io/ip
curl --proxy socks5h://localhost:9070 http://ipinfo.io/ip
curl --proxy socks5h://localhost:9080 http://ipinfo.io/ip
start-stop-daemon --start --exec /usr/sbin/privoxy --pidfile /var/run/privoxy.pid -- --user root /etc/privoxy/config 
start-stop-daemon --start --exec /usr/sbin/privoxy2 --pidfile /var/run/privoxy2.pid -- --user root /etc/privoxy2/config 
start-stop-daemon --start --exec /usr/sbin/privoxy3 --pidfile /var/run/privoxy3.pid -- --user root /etc/privoxy3/config 
start-stop-daemon --start --exec /usr/sbin/privoxy4 --pidfile /var/run/privoxy4.pid -- --user root /etc/privoxy4/config 
如果你做得很好,每个人都应该返回不同的ip。 现在我们有4个tor实例同时运行。 但是tor使用sock5代理,对于我们的scrapy项目,我们需要它是http代理。 所以我们要插上privoxy

第一步。让我们像tor一样复制privoxy文件夹3次

cp -a /etc/privoxy /etc/privoxy2
cp -a /etc/privoxy /etc/privoxy3 
cp -a /etc/privoxy /etc/privoxy4
第二步。现在我们要编辑每个privoxy文件夹中的每个配置文件:

mousepad /etc/privoxy(2,3,4)/config
 cp /etc/init.d/privoxy /etc/init.d/privoxy2 
 cp /etc/init.d/privoxy /etc/init.d/privoxy3
 cp /etc/init.d/privoxy /etc/init.d/privoxy4
首先,我们必须取消选中“forward-socks5t”并更改每个配置文件的端口:

    forward-socks5t   /               127.0.0.1:9050 .
    forward-socks5t   /               127.0.0.1:9060 .
    forward-socks5t   /               127.0.0.1:9070 .
    forward-socks5t   /               127.0.0.1:9080 .
同时更改侦听地址:

listen-address  127.0.0.1:8118
listen-address  127.0.0.1:8128
listen-address  127.0.0.1:8138
listen-address  127.0.0.1:8148
第三步。我们要复制另一个privoxy文件夹:

mousepad /etc/privoxy(2,3,4)/config
 cp /etc/init.d/privoxy /etc/init.d/privoxy2 
 cp /etc/init.d/privoxy /etc/init.d/privoxy3
 cp /etc/init.d/privoxy /etc/init.d/privoxy4
第四步。编辑每个文件夹中的privoxy文件:

mousepad /etc/init.d/privoxy(2,3,4)
NAME=privoxy(2,3,4)  
OWNER=privoxy(2,3,4)    
LOGDIR=/var/log/privoxy(2,3,4)
CONFIGFILE=/etc/privoxy(2,3,4)/config 
第五步。最后,复制每个privoxy的日志:

cp -a /usr/sbin/privoxy /usr/sbin/privoxy2 
cp -a /usr/sbin/privoxy /usr/sbin/privoxy3 
cp -a /usr/sbin/privoxy /usr/sbin/privoxy4
完成了。 让我们在不同的终端测试、重新启动4个TOR,如步骤5所示。 现在我们将在不同的终端4 Privoxy上启动,如下所示:

Terminal 1: tor -f /etc/tor/torrc
Terminal 2: tor -f /etc/tor/torrc2
Terminal 3: tor -f /etc/tor/torrc3
Terminal 4: tor -f /etc/tor/torrc4
curl --proxy socks5h://localhost:9050 http://ipinfo.io/ip
curl --proxy socks5h://localhost:9060 http://ipinfo.io/ip
curl --proxy socks5h://localhost:9070 http://ipinfo.io/ip
curl --proxy socks5h://localhost:9080 http://ipinfo.io/ip
start-stop-daemon --start --exec /usr/sbin/privoxy --pidfile /var/run/privoxy.pid -- --user root /etc/privoxy/config 
start-stop-daemon --start --exec /usr/sbin/privoxy2 --pidfile /var/run/privoxy2.pid -- --user root /etc/privoxy2/config 
start-stop-daemon --start --exec /usr/sbin/privoxy3 --pidfile /var/run/privoxy3.pid -- --user root /etc/privoxy3/config 
start-stop-daemon --start --exec /usr/sbin/privoxy4 --pidfile /var/run/privoxy4.pid -- --user root /etc/privoxy4/config 
为了测试它是否有效,让我们对同一个站点进行卷曲:

curl --proxy http://127.0.0.1:8118 http://ipinfo.io/ip
curl --proxy http://127.0.0.1:8128 http://ipinfo.io/ip
curl --proxy http://127.0.0.1:8138 http://ipinfo.io/ip
curl --proxy http://127.0.0.1:8148 http://ipinfo.io/ip
如果它给你不同的IP,那么你做的每件事都很好。 如果要关闭所有Privoxy,只需键入:

pkill privoxy(2,3,4)
现在,当你在scrapy中制作蜘蛛时,你可以为每个蜘蛛使用不同的代理 蜘蛛,这里有一个例子:

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


def get_new_ip(2,3,4)():
    with Controller.from_port(port=9051(9061,9071,9081) as controller:
        controller.authenticate()
        controller.signal(Signal.NEWNYM)
    response = requests.get('https://api.myip.com/', proxies={'https': '127.0.0.1:8118(8128,8138,8148)'})
    print(response.text)


class ProxyMiddleware(2,3,4)(object):
    _requests_count = 0

    def process_request(self, request, spider):
        self._requests_count += 1
        if self._requests_count > 5:
            self._requests_count = 0
            get_new_ip1()

        request.meta['proxy'] = 'http://127.0.0.1:8118(8128,8138,8148)'
        spider.log('Proxy : %s' % request.meta['proxy'])
就这样,我希望这能帮到你!)) 我曾经为了把所有这些工作结合在一起而苦苦挣扎,但没有找到任何教程 它一步一步地解释了如何让它工作

祝你好运


-Mikhail Aleksandrovskiy(离岸47)

是否需要privoxy?您可以使用Tor的指令指定多个HTTP代理端口,每个端口具有流隔离(不同的IP),然后配置scrapy的HTTP代理中间件以使用Tor的HTTP代理。每个scrapy实例都可以使用自己的HTTPTunnelPort,并且每个实例都有自己的IP,所有这些都来自一个Tor实例。