【问题标题】:Easiest way to crawl a site with an .onion domain?使用 .onion 域抓取网站的最简单方法是什么?
【发布时间】:2013-08-05 16:52:09
【问题描述】:

我正在尝试构建一个网站来抓取托管在 .onion 域上的各种页面。这意味着它不像调用requests.get("http://XXX.onion") 那样简单,因为.onion 只能通过TOR 连接。

我可以使用像 onion.to 这样的重定向器,但这需要点击,当我在爬网时这不起作用。

我不关心匿名性,我只想要数据。

【问题讨论】:

  • 你关心 an-onion-imity 吗?
  • 我想指出,您的用户名与问题的结合有点痛苦。

标签: python tor


【解决方案1】:

你为什么不设置 Tor 并使用一堆 wget 和 torsocks?

例如

# torsocks wget -c -mirror http://kpvz7ki2v5agwt35.onion

【讨论】:

    【解决方案2】:

    Requests 支持 HTTP 代理,但不支持 SOCKS 代理,这是 Tor 为您提供的。

    您可以获取请求的修补版本:How to make python Requests work via socks proxy

    或者安装 Polipo 并将其用作另一个代理,以将 Tor 的 SOCKS5 代理“转换”为 HTTP/HTTPS 代理。这是我的配置文件:

    proxyName = "localhost"
    proxyAddress = "127.0.0.1"
    proxyPort = 8118
    
    allowedClients = 127.0.0.1
    allowedPorts = 1-65535
    
    cacheIsShared = false
    chunkHighMark = 67108864
    
    socksParentProxy = "localhost:9050"
    socksProxyType = socks5
    
    
    diskCacheRoot = ""
    localDocumentRoot = ""
    
    disableLocalInterface = true
    disableConfiguration = true
    disableVia = true
    
    dnsUseGethostbyname = yes
    
    maxConnectionAge = 5m
    maxConnectionRequests = 120
    
    serverMaxSlots = 8
    serverSlots = 2
    
    tunnelAllowedPorts = 1-65535
    

    现在,您可以将代理与请求一起使用:

    proxies = {
        'http': 'localhost:8118',
        'https': 'localhost:8118'
    }
    
    requests.get('http://something.onion/', proxies=proxies)
    

    【讨论】:

    • 我尝试了requesocks 方法,但它不适用于 .onion 域。但它适用于常规域...... Polipo 方法并不理想,但似乎是我唯一的选择。
    • @priestc:你有运行 Tor 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多