簡體   English   中英

使用 Tor python 在迭代中更改 ip

[英]changing ip in iteration with tor python

每次運行循環時,我都想更改我的 IP。 我正在嘗試使用 TOR 來實現它。 我看過很少有類似問題的帖子,但給出的解決方案不起作用。 到目前為止,我的代碼如下所示:

import socks
#import socket
import requests
import time


for i in range(1,3):
    socks.setdefaultproxy(proxy_type=socks.PROXY_TYPE_SOCKS5, addr="127.0.0.1", port=9050)
    try:
        print (requests.get("http://icanhazip.com").text)
    except Exception as e:
        time.sleep(30)
        print (type(e))
        print (e)

我每次都需要不同的IP,而不是相同的IP。

編輯:我嘗試過使用如何在 Python 中更改 Tor 身份的方法? . 我的限制是不使用任何外部庫。 Nedim 提供的解決方案也沒有外部庫。

到目前為止,我已經嘗試從提到的鏈接中獲取不同的 IP:

import socket
import sys
import os

try:
    tor_c = socket.create_connection(("127.0.0.1", 9051 ))

    secret = os.urandom(32) # pass this to authenticate
    hash = tor_c.s2k_gen(secret) # pass this to Tor on startup.

    tor_c.send('AUTHENTICATE "{}"\r\nSIGNAL NEWNYM\r\n'.format(hash))
    response = tor_c.recv(1024)
    if response != '250 OK\r\n250 OK\r\n':
        sys.stderr.write('Unexpected response from Tor control port: {}\n'.format(response))
except Exception as e:
    sys.stderr.write('Error connecting to Tor control port: {}\n'.format(repr(e)))

但它拋出以下錯誤:

Error connecting to Tor control port: ConnectionRefusedError(10061, 'No connection could be made because the target machine actively refused it', None, 10061, None)
def renew_connection():
    with Controller.from_port(port=9051) as controller:
        controller.authenticate(password='password')
        controller.signal(Signal.NEWNYM)
        controller.close()

def request_tor(url, headers):

    print((requests.get(url,proxies={'http': 'socks5h://localhost:9050'}, headers=headers)).text)
    r = requests.get(url)
    print('direct IP:', r.text)


if __name__ == "__main__":
    url = 'http://icanhazip.com'
    headers = { 'User-Agent': UserAgent().random }
    for i in range(5):
        request_tor(url,headers)
        renew_connection()
        time.sleep(5)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM