当前位置:  开发笔记 > 编程语言 > 正文

如何在Python中通过Tor制作urllib2请求?

如何解决《如何在Python中通过Tor制作urllib2请求?》经验,为你挑选了2个好方法。

我正在尝试使用Python编写的爬虫来抓取网站.我想将Tor与Python集成,这意味着我想使用Tor匿名抓取该站点.

我试过这样做.它似乎不起作用.我检查了我的IP,它仍然与我使用tor之前的IP相同.我通过python检查了它.

import urllib2
proxy_handler = urllib2.ProxyHandler({"tcp":"http://127.0.0.1:9050"})
opener = urllib2.build_opener(proxy_handler)
urllib2.install_opener(opener)

Dmitri Farko.. 21

您正在尝试连接到SOCKS端口 - Tor拒绝任何非SOCKS流量.您可以通过中间人 - Privoxy - 使用端口8118进行连接.

例:

proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1:8118"})
opener = urllib2.build_opener(proxy_support) 
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
print opener.open('http://www.google.com').read()

另请注意传递给ProxyHandler的属性,没有http前缀为ip:port



1> Dmitri Farko..:

您正在尝试连接到SOCKS端口 - Tor拒绝任何非SOCKS流量.您可以通过中间人 - Privoxy - 使用端口8118进行连接.

例:

proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1:8118"})
opener = urllib2.build_opener(proxy_support) 
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
print opener.open('http://www.google.com').read()

另请注意传递给ProxyHandler的属性,没有http前缀为ip:port


这个答案很糟糕,你应该心疼.Tor控制端口是9051,而不是9050. 9050是你可以使用的袜子端口http://stackoverflow.com/questions/2317849/how-can-i-use-a-socks-4-5-proxy-与-的urllib2

2> Ciro Santill..:
pip install PySocks

然后:

import socket
import socks
import urllib2

ipcheck_url = 'http://checkip.amazonaws.com/'

# Actual IP.
print(urllib2.urlopen(ipcheck_url).read())

# Tor IP.
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', 9050)
socket.socket = socks.socksocket
print(urllib2.urlopen(ipcheck_url).read())

仅仅使用urllib2.ProxyHandler在/sf/ask/17360801/失败:

Tor is not an HTTP Proxy

提到:我如何使用urllib2的SOCKS 4/5代理?

在Ubuntu 15.10,Tor 0.2.6.10,Python 2.7.10上测试.


对于9050,它在Python 3中不起作用。我收到以下错误:`urllib.error.URLError:<urlopen错误PySocks不支持IPv6>`。不过,使用** 9150 **而不是9050即可。
推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有