Urllib2 использует Tor и носки в Python
Я пытаюсь сканировать сайты в Python, используя Tor. Я попробовал приведенный ниже код, который дает IP, используемый tor, пробуя этот код 2-3 раза, я получаю разные IP из разных стран. Я хочу IP-адреса из конкретной страны, например, из Индии. Можем ли мы сделать это, используя тор и носки?
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()
1 ответ
Решение
Чтобы получить 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()