gpt4 book ai didi

networking - 使用 tor 作为 SOCKS5 代理与 python urllib2 或 mechanize

转载 作者:太空宇宙 更新时间:2023-11-03 16:51:02 26 4
gpt4 key购买 nike

我的目标是将 python 的 Mechanize 与 tor SOCKS 代理结合使用。

我没有在以下 Ubuntu 版本中使用 GUI: 说明:Ubuntu 12.04.1 LTS 发布:12.04 代号:精确

Tor 已安装并根据 nmap 扫描监听端口 9050:

    Starting Nmap 5.21 ( http://nmap.org ) at 2013-01-22 00:50 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000011s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
3306/tcp open mysql
9050/tcp open tor-socks

我还认为看看我是否可以远程登录到端口 9050 是合理的,我可以:

    telnet 127.0.0.1 9050
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
quit
Connection closed by foreign host.

我对这篇文章中关于让 tor 使用 urllib2 的建议寄予厚望: How can I use a SOCKS 4/5 proxy with urllib2?

所以我在 python 中尝试了以下脚本:

    import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket
import urllib2
print urllib2.urlopen('http://icanhazip.com').read()

脚本只是挂起,没有任何响应。

我认为由于 mechanize 似乎与 urllib2 有关,因此以下脚本可能有效:

    import socks
import socket
import mechanize
from mechanize import Browser
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket
br = Browser()
print br.open('http://icanhazip.com').read()

我使用 urllib2 脚本得到与上面相同的结果。

我是 python 和网络的新手,所以我需要关于如何使 python urllib2 在非 GUI Ubuntu 服务器上将 tor 用作 SOCKS 的第二个意见。

我运行了这个脚本并收到了预期的响应。我没有使用 tor 代理:

    In [1]: import urllib2

In [2]: print urllib2.urlopen('http://icanhazip.com').read()
xxxx:xxxx:xxxx:512:13b2:ccd5:ff04:c5f4

谢谢。

我找到了有用的东西!我不知道它为什么会起作用,但确实如此。我在这里找到它: Python urllib over TOR?

    import socks
import socket
def create_connection(address, timeout=None, source_address=None):
sock = socks.socksocket()
sock.connect(address)
return sock

socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)

# patch the socket module
socket.socket = socks.socksocket
socket.create_connection = create_connection

import urllib2

print urllib2.urlopen('http://icanhazip.com').read()

import mechanize
from mechanize import Browser

br = Browser()
print br.open('http://icanhazip.com').read()

最佳答案

见问题结尾。

import socks
import socket
def create_connection(address, timeout=None, source_address=None):
sock = socks.socksocket()
sock.connect(address)
return sock

socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)

# patch the socket module
socket.socket = socks.socksocket
socket.create_connection = create_connection

import urllib2

print urllib2.urlopen('http://icanhazip.com').read()

import mechanize
from mechanize import Browser

br = Browser()
print br.open('http://icanhazip.com').read()

关于networking - 使用 tor 作为 SOCKS5 代理与 python urllib2 或 mechanize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14449974/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com