【问题标题】:Python General SOCKS server failure when assigning socket.socket分配socket.socket时Python一般SOCKS服务器失败
【发布时间】:2018-01-16 23:10:22
【问题描述】:

我知道类似的问题已经被问过好几次了:

General SOCKS server failure with python tor but working from tor browser

General SOCKS server failure when switching identity using stem

General SOCKS server failure while using tor proxy

我检查了所有相关的帖子并用谷歌搜索了很多,但仍然卡住了。

我在 Win10 上。我下载了 Tor 浏览器,运行它并确保它在端口 127.0.0.1:9150 上,并在管理员中使用 cmd netstat -aon。 然后我在 Python 中运行以下示例代码:

import socks
import socket
socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 9150)
socket.socket = socks.socksocket

最后一行socket.socket = socks.socksocket 给出了错误消息。 socks.GeneralProxyError: Socket error: 0x01: General SOCKS server failure 它应该返回一个套接字对象,该对象分配给打开套接字的 socket.socket。像这个例子:

https://deshmukhsuraj.wordpress.com/2015/03/08/anonymous-web-scraping-using-python-and-tor/

谁能告诉我怎么了? 谢谢。

更新

感谢draw010的回答,这段代码可以正常工作(运行Tor浏览器并且端口= 9150):

import requests

proxies = {
    'http': 'socks5h://127.0.0.1:9150',
    'https': 'socks5h://127.0.0.1:9150'
}

url = 'http://icanhazip.com'

# request without Tor (original IP)
r = requests.get(url)
print(r.text)

# request with Tor (Tor IP)
r = requests.get(url, proxies=proxies)
print(r.text)

# Force change IP
from stem.control import Controller
from stem import Signal

with Controller.from_port(port = 9151) as controller:
    controller.authenticate('mypassword')  
    controller.signal(Signal.NEWNYM) 

# Changed Tor IP
r = requests.get(url, proxies=proxies)
print(r.text)

注意,我们需要在torrc之前设置密码。

【问题讨论】:

  • 谢谢,它有效。但是有什么办法可以强制改变IP吗? Tor 每隔几分钟就会更改一次 IP。
  • 您可以在此处使用答案中的代码强制更改:stackoverflow.com/questions/33490484/… 您需要修改您的 torrc 以设置HashedControlPassword,然后使用端口 9151 上的 Stem Controller 连接(对于 Tor 浏览器Bundle)并发出SIGNAL NEWNYM 命令更改IP。请记住,您只能每 10-30 秒执行一次此操作,并且 Tor 只有有限数量的可用退出 IP 地址。如果其中任何一个答案有帮助,请考虑对它们进行投票。谢谢!
  • 谢谢,问题已解决。您可以在答案中复制粘贴您的 cmets 吗?所以我可以将其标记为解决方案并结束此案例。

标签: python proxy tor


【解决方案1】:

通过执行“socket.socket = socks.socksocket”,您实际上将每个未来的套接字对象替换为实际上是一个 socksocket 对象,这意味着之后您可以使用常规套接字,它们将通过您的 socks 代理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 2018-04-21
    • 1970-01-01
    • 2016-03-21
    相关资源
    最近更新 更多