1

我想使用scrapy shell並測試需要基本身份驗證憑據的url的響應數據。我試圖檢查scrapy shell文檔,但是我找不到它。如何使用帶網址和基本認證憑證的scrapy shell?

我試過scrapy shell 'http://user:[email protected]',但沒有奏效。 有人知道我能做到嗎?

+0

你能分享你如何登錄蜘蛛內嗎? – eLRuLL

+0

我在蜘蛛中使用[HttpAuthMiddleware](https://doc.scrapy.org/en/latest/topics/downloader-middleware.html#scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware),但我想用shell而不是蜘蛛。 – Rohanil

+0

只要您從項目目錄運行shell命令,它就會工作。中間件也不需要url中的'user:password',中間件爲你處理 –

回答

4

,如果你希望只使用外殼,你可以做這樣的事情:

$ scrapy shell 

和內殼:

>> from w3lib.http import basic_auth_header 
>> from scrapy import Request 
>> auth = basic_auth_header(your_user, your_password) 
>> req = Request(url="http://example.com", headers={'Authorization': auth}) 
>> fetch(req) 

fetch使用當前的請求,以更新的shell會話。

+0

謝謝。有效。 – Rohanil

+0

說實話我會說你的想法,直接在shell上添加'user:pass'到網址看起來很有趣,我會嘗試建議或實施到'scrapy' – eLRuLL

+1

看起來很快就會解決:https: //github.com/scrapy/scrapy/pull/1466 – eLRuLL

1

是的與httpauth middleware

確保HTTPAuthMiddleware在設置中啓用然後只是定義:

class MySpider(CrawSpider): 
    http_user = 'username' 
    http_pass = 'password' 
    ... 

在你的蜘蛛類變量。

此外,如果中間件已在設置中啓用,則不需要在url中指定登錄憑據。

+0

我想用shell而不是蜘蛛 – Rohanil

+0

shell使用項目資源 –

+1

@Rohanil嘗試'scrapy shell' http://www.example.org',並確保你已經將中間件包含在你的設置中,同時指定登錄憑證作爲類變量,因爲它們在我的示例中被命名爲 –