亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

TorRequests 和 Python - InvalidSchema:缺少 SOCKS

TorRequests 和 Python - InvalidSchema:缺少 SOCKS

繁花不似錦 2021-12-09 10:22:55
我想在 Tor 的幫助下使用 python 3 進行匿名 Web 請求,我正在學習本教程:https : //computerscienceandfangs.blogspot.com/2018/04/setting-up-tor-for-windows-10- python-3.html。到目前為止,我只是在測試教程代碼的第一部分(如下):import requestsdef get_tor_session():    session = requests.session()    # Tor uses the 9050 port as the default socks port    session.proxies = {'http':  'socks5://127.0.0.1:9050',                       'https': 'socks5://127.0.0.1:9050'}    return session# Make a request through the Tor connection# IP visible through Torsession = get_tor_session()print(session.get("http://httpbin.org/ip").text)# Above should print an IP different than your public IP# Following prints your normal public IPprint(requests.get("http://httpbin.org/ip").text)因此,當我執行代碼時:print(session.get("http://httpbin.org/ip").text),它應該向我顯示與我不同的 IP 地址。但是,我收到錯誤消息: File "C:\Program Files\Anaconda3\lib\site-packages\requests\adapters.py", line 43, in SOCKSProxyManager    try:InvalidSchema: Missing dependencies for SOCKS support.我已經按照教程安裝了以下軟件包:1)pip安裝請求——升級2)pip安裝請求[socks]3)pip安裝莖我使用的是 Windows 7(64 位)。用于 Python IDE 的 Spyder。Python 3.5 版。第二個問題,更籠統。我希望在更大范圍內提出請求,作為網絡爬蟲項目的一部分。上面的方法,使用我引用的教程,仍然是一個很好的方法(即使用 Python 手動編碼),以確保您不會被禁止/列入黑名單?或者是否有更先進的服務可以為您執行匿名 IP 請求、IP 輪換和請求限制,而無需您編寫自己的軟件并手動配置,并且請求數量不受限制?提前謝謝了。
查看完整描述

2 回答

?
慕碼人8056858

TA貢獻1803條經驗 獲得超6個贊

解決錯誤:InvalidSchema: Missing dependencies for SOCKS support我通過在命令行中運行以下命令在 Windows 操作系統中重新啟動 Tor 服務:

tor --service remove

然后

tor --service install -options ControlPort 9051


查看完整回答
反對 回復 2021-12-09
?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

您是否正在從 cli 運行 Tor 服務?


您的代理應如下所示:


session.proxies = {'http':  'socks5h://127.0.0.1:9050',

                   'https': 'socks5h://127.0.0.1:9050'}

此外,請求并非旨在以您描述的方式發出大量請求。我會建議使用以下設置,使用aiohttp,aiohttp_socks和asyncio。


import asyncio, aiohttp

from aiohttp_socks import SocksConnector


async def get_one(url, callback):

    connector = SocksConnector.from_url('socks5://localhost:9050', rdns=True)

    # rdns=True is important!

    # 1) Can't connect to hidden services without it

    # 2) You will make DNS lookup requests using your real IP, and not your Tor IP!

    async with aiohttp.ClientSession(connector=connector) as session:

        print(f'Starting {url}')

        async with session.get(url) as res:

            return await callback(res)


def get_all(urls, callback):

    future = []

    for url in urls:

        task = asyncio.ensure_future(get_one(url, callback))

        future.append(task)


    return future


def test_callback(res):

    print(res.status)


if __name__ == '__main__':

    urls = [

        'https://python.org', 

        'https://google.com',

        #...

    ]


    loop = asyncio.get_event_loop()

    future = get_all(urls, test_callback)

    loop.run_until_complete(asyncio.wait(future))


查看完整回答
反對 回復 2021-12-09
  • 2 回答
  • 0 關注
  • 281 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號