1

私はチュートリアルTo Russia With Loveに従っていますが、その一環として、コードを実行するたびに ID を変更したいと考えています。複数の質問とチュートリアルを見てきましたが、その外観から、torrc-defaults ファイルは次のように正しいです: ControlPort 9151 CookieAuthentication 1

最初にtorrcファイルを編集したかったのですが、それを触るとTorが動かなくなるので、どこかで読んでtorrcを調べました。torrc ファイルだけでは次の内容しかありません。

# This file was generated by Tor; if you edit it, comments will not be preserved
# The old torrc file was renamed to torrc.orig.1 or similar, and Tor will ignore it

パスワードを設定したくないので、ステムドキュメントを読んで理解したところ、認証を設定するだけで十分です。次のコードがあります。

import socks  # SocksiPy module
import socket
import requests

SOCKS_PORT = 9150

# Set socks proxy and wrap the urllib module

socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', SOCKS_PORT)
socket.socket = socks.socksocket

def getaddrinfo(*args):
  return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (args[0], args[1]))]

socket.getaddrinfo = getaddrinfo

url = "http://google.com"

print requests.get(url).elapsed.total_seconds()

from stem import Signal
from stem.control import Controller

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

しかし、実行すると次のエラーが表示されます: socks.SOCKS5Error: 0x01: General SOCKS server failure

どうすればいいのかわかりません。これについて何時間も読んでいますが、問題を解決できませんでした。どんなヒントも素晴らしいでしょう。

編集: This Postも読みましたが、解決策があるようには見えません。ソケットを設定する前にControllerステートメントを入れてみましたが、その場合、IPは同じままで変更されません。

4

1 に答える 1

0

ソケットを設定する前にコントローラーステートメントを移動することで、この問題を解決しました。最初は IP が同じままのように見えましたが、さらに 3 秒または 4 秒待つと IP が変更されることが判明したため、時間遅延を追加しただけで問題なく動作しました。

于 2016-11-30T03:29:02.810 に答える