在 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()
我正在尝试使用 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()