You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows 10系统中Tor服务的安装与运行方法及Python洋葱站点请求脚本适配问题

在Windows 10中部署Tor服务并修复Python洋葱站点请求脚本的问题

我来帮你搞定Windows 10上的Tor服务部署和Python脚本适配问题——毕竟我之前也碰到过类似的跨系统兼容坑,一步步来:

一、在Windows 10上安装并配置Tor服务

和Ubuntu自带的Tor服务不同,Windows上我们需要用Tor官方提供的Expert Bundle(专业版包)来搭建后台服务,而不是普通的Tor浏览器(它是图形界面的客户端):

  1. 下载Tor Expert Bundle
    去Tor官方的Expert Bundle下载页面,选择对应你Windows系统的版本(32位或64位),下载后得到一个压缩包。

  2. 解压到合适的路径
    把压缩包解压到一个无中文、无空格的路径下,比如C:\Tor。解压后你会看到TorData等文件夹。

  3. 配置Tor配置文件
    进入C:\Tor\Data\Tor目录,找到torrc.sample文件,复制一份并重命名为torrc(去掉.sample后缀)。用记事本或代码编辑器打开这个文件,做以下调整:

    • 找到SocksPort 9050这一行,去掉前面的注释符号#,确保SOCKS代理端口是9050(默认值,不要随便改,除非你知道自己在做什么)。
    • 确认DataDirectory路径指向当前的Data\Tor文件夹,比如DataDirectory C:\Tor\Data\Tor,如果这一行被注释了就去掉#
  4. 安装并启动Tor服务
    打开管理员模式的命令提示符(CMD),进入Tor的Tor文件夹路径:

    cd C:\Tor\Tor
    

    执行安装命令:

    tor --service install
    

    安装完成后,启动服务:

    tor --service start
    

    以后每次开机Tor服务都会自动启动,你也可以通过tor --service stop停止服务,tor --service remove卸载服务。

  5. 验证Tor服务是否正常运行

    • 打开任务管理器,切换到「服务」标签,找到名为Tor Win32 Service的服务,确认状态是「正在运行」。
    • 用命令测试端口监听:
      netstat -ano | findstr :9050
      
      如果返回一行结果,说明9050端口已经被Tor服务占用,服务运行正常。

二、调整Python脚本适配Windows环境

你的Ubuntu脚本在Windows上失效,大概率是代理配置或者依赖问题,按以下步骤调整:

  1. 确保安装了正确的依赖
    如果用的是requests库,Windows上需要单独安装SOCKS代理支持:

    pip install requests[socks]
    
  2. 检查脚本中的代理配置
    确保脚本里的代理指向Tor服务的SOCKS端口(默认9050),示例代码如下:

    import requests
    
    # 配置Tor SOCKS代理
    proxies = {
        'http': 'socks5://127.0.0.1:9050',
        'https': 'socks5://127.0.0.1:9050'
    }
    
    try:
        # 替换成你要访问的洋葱站点
        response = requests.get('http://example.onion', proxies=proxies, timeout=30)
        response.raise_for_status()
        print(response.text)
    except Exception as e:
        print(f"请求失败:{str(e)}")
    

    如果你用的是urllib库,代理配置如下:

    import urllib.request
    from socks import SOCKS5ProxyHandler
    
    # 设置Tor SOCKS代理
    proxy_handler = SOCKS5ProxyHandler(('127.0.0.1', 9050))
    opener = urllib.request.build_opener(proxy_handler)
    urllib.request.install_opener(opener)
    
    try:
        response = urllib.request.urlopen('http://example.onion', timeout=30)
        print(response.read().decode('utf-8'))
    except Exception as e:
        print(f"请求失败:{str(e)}")
    
  3. 关键注意点

    • 不要把代理写成socks://,一定要用socks5://,部分库对协议前缀的识别很严格。
    • 确保Tor服务的torrc文件中没有限制本地连接(默认AllowLocalhost 1是开启的,不需要额外修改)。

三、常见问题排查

如果调整后还是不行,试试这些排查步骤:

  • 先用Tor浏览器手动访问目标洋葱站点,确认站点本身是可访问的,排除站点故障的可能。
  • 暂时关闭Windows防火墙和第三方安全软件,测试是否是防火墙阻止了Tor或Python的网络请求。
  • 检查Tor服务的日志:日志文件在C:\Tor\Data\Tor\notice.log,打开看看有没有报错信息,比如端口被占用、权限不足等。
  • 确认Python脚本运行时没有使用代理软件(比如VPN),避免代理冲突。

内容的提问来源于stack exchange,提问作者manoj adhikari

火山引擎 最新活动