在 python 中使用 Tor 和 socks 的 Urllib2

Urllib2 using Tor and socks in python

我正在尝试使用 tor 在 Python 中抓取网站。我尝试了下面的代码,它给出了 tor 使用的 IP,尝试这段代码 2-3 次给了我来自不同国家的不同 IP。我想要来自特定国家 例如印度 的 IP。我们可以使用 tor 和 socks 来实现吗?

import socks
import socket
import urllib2    
socks.setdefaultproxy(socks.PROXY_TYPE_HTTP, "127.0.0.1", 9050)
socket.socket = socks.socksocket
print urllib2.urlopen('http://my-ip.herokuapp.com').read()

要从特定国家/地区获取 ip,您必须设置两个参数 ExitNodes={countrycode}StrictNodes=1。此处用于印度国家代码是{in}。要知道国家代码检查http://www.b3rn3d.com/blog/2014/03/05/tor-country-codes/。 使用 python 您可以按如下方式设置这些参数

代码:-

import socks
import socket
import urllib2    

def newIdentity(self):
        socks.setdefaultproxy()
        s= socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        s.connect(("127.0.0.1", 9051))
        s.send('AUTHENTICATE "my_password" \r\n')
        response = s.recv(128)
        if response.startswith("250"):
            s.send("SETCONF ExitNodes={in}\r\n")
            s.send("SETCONF StrictNodes=1\r\n")
            s.send("SIGNAL NEWNYM\r\n")
        s.close()
        socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
        socket.socket = socks.socksocket
if __name__ == '__main__':
newIdentity()
print urllib2.urlopen('http://my-ip.herokuapp.com').read()