Python httpS tor连接

时间:2017-07-10 23:31:11

标签: python https tor

我正在尝试使用TOR请求,首先是通过HTTP,然后是HTTPS。

我尝试了所有用于TOR的python库,并且所有这些库都有相同的问题,即HTTPS连接。 我的问题不是与HTTPS的真正沟通,如果我尝试获取新的TOR IP,使用HTTP请求刷新IP地址,但与HTTPS不一样!所以,我仍在使用TOR网络,但总是使用相同的IP ..

from stem import Signal
from stem.control import Controller
import requests
import time
import os

session = requests.session()
# signal TOR for a new connection
session.proxies = {'http':  'socks5://127.0.0.1:9150',
               'https': 'socks5://127.0.0.1:9150'}

def new_connection():
    with Controller.from_port(port = 9151) as controller:


    controller.authenticate(password="####")
        # NUOVA CONNESSIONE
    print 'Trying to connect with new IP...'
    controller.signal(Signal.NEWNYM)
    time.sleep(5) #5 sec
    print "New connection as "+session.get("http://ipecho.net/plain").text

    response = session.get("https://www.google.it/").text
    print response

还有一件事...... 我正在使用tor版本的OSX,但我无法获得它的控制端口,所以我使用Tor浏览器(9150)与控制端口9151

2 个答案:

答案 0 :(得分:0)

当您获得新的身份识别身份时,您可能仍然拥有相同的IP地址,因为只有一定的服务量您可以尝试这样的事情:

def get_new_tor_ip():
try:
    ip_current = session.get("http://ipecho.net/plain").text
except:
    ip_current = OWN_IP
ip_old = ip_current
socket.socket = OWN_SOCKET
with Controller.from_port(address='127.0.0.1', port=9051) as controller:
    controller.authenticate()  # optional
    socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
    socket.socket = socks.socksocket
    while True:
        controller.signal(Signal.NEWNYM)
        try:
            ip_current = str(session.get("http://ipecho.net/plain").text
            if ip_current != (ip_old and OWN_IP):
                break
            sleep_time = random.randint(1, 3)
            time.sleep(sleep_time)
        except:
            pass

答案 1 :(得分:0)

如果您正在使用词干库,它将为您处理:

from stem import Signal
from stem.control import Controller
with Controller.from_port(port = 9051) as controller:
    controller.authenticate()
    controller.signal(Signal.NEWNYM)

如果您没有为tor设置任何哈希密码,则可以删除controller.authenticate()。 如果要为Tor控制器端口设置密码,请执行以下操作:

tor --hash-password my_password

它将生成类似此字符串16:3F347B435567CBE1608384B9236897C7322A8EB241CFE5855863F32FB9的内容。现在修改torrc文件:

sudo vim /etc/tor/torrc

取消注释这些行:

ControlPort 9051
HashedControlPassword 16:E600ADC1B52C80BB6022A0E999A7734571A451EB6AE50FED489B72E3DF
CookieAuthentication 1