首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Urllib2在python中使用Tor和socks

Urllib2在python中使用Tor和socks
EN

Stack Overflow用户
提问于 2015-01-15 05:48:13
回答 1查看 1.1K关注 0票数 0

我试着用tor抓取Python中的网站。我尝试了下面的代码,它给出了tor使用的IP,尝试了2-3次,得到了来自不同国家的不同的IP。我想要特定国家的知识产权,如印度。我们能用托尔和袜子来做吗?

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-20 12:03:00

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

代码:-

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27957470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档