2013-05-02 51 views
1

(這是一個後續問題this one如何查看通過電線發送的實際數據請求?

我怎麼能告訴urllib3來記錄FULL要求,包括但不限於:

  • URL
  • 查詢參數
  • 標題
  • body
  • and別的被請求內發送(我不知道還有什麼事,但如果有別的東西,我也想看看它)

我有連接到LinkedIn使用OAuth麻煩(一類似的實施與谷歌和Facebook合作),我想看到正好什麼請求正在發送。我懷疑auth_token沒有提供,但我需要確認這一點。爲此,我需要urllib3來顯示完整的請求,因爲它們是通過HTTPS,我無法分析網絡流量以查看它們(端對端加密)。

+0

您應該花一些時間來研究Requests API;如果您閱讀了rauth和Requests文檔,我注意到您可以回答自己的很多問題。例如,在Requests文檔中充分討論了從'Response'對象訪問'PreparedRequest'對象的情況。 – maxcountryman 2013-05-02 16:10:39

+1

當然你是對的。如果我有時間閱讀Requests,urrlib3和rauth(以及任何其他依賴項)的文檔,請記住所有這些細節,並將它們應用於我的特定情況,決定如何解決我的特定問題,我會自己解決這個問題。哎呀,我永遠不需要Stackoverflow!我對這些請求內容甚至沒有興趣:我只是試圖讓linkedin與OAuth2合作,奇怪的是,期望oauth2_access_token而不是access_token,它是默認的rauth(不能被覆蓋),並且不需要承載令牌在標題中。 – dangonfast 2013-05-03 07:34:50

+1

只是爲了澄清。我看到它的方式,你是圖書館的專家。我不是。我 - 和其他人 - 需要你的幫助(你可以給與否)我認爲你需要別人幫助解決其他問題,並且你並不是所有領域的專家。所以你經常會問一些愚蠢或明顯的問題。至少我是。所以是的,你可以抱怨我問的是愚蠢的問題(這不是我問過的最愚蠢的問題),但我已經知道了。某處,某個地方是我的問題的答案。我只是不知道在哪裏,這是(對我來說)正確的地方要問。 – dangonfast 2013-05-03 07:40:43

回答

2

您可以通過使用request訪問者訪問請求事實之後實際發送的PreparedRequest對象。 print dir(r.request)

+0

這需要訪問響應本身,我相信OP沒有。 – 2013-05-02 16:06:55

+0

如果他正在使用rauth,他絕對會。 – maxcountryman 2013-05-02 16:07:53

+0

我只會說你的話,我不會自己使用這個庫。 – 2013-05-02 16:14:11

0

可以攻入requests hooks system代替,然後用它來跟蹤響應和他們的要求:

from requests import hooks 


_orig_default_hooks = hooks.default_hooks 


def my_default_hooks(): 
    hooks = _orig_default_hooks() 
    hooks['response'].append(response_hook) 
    return hooks 


hooks.default_hooks = my_default_hooks 


# requests.models is imported by the requests package, so we need to ensure it's reference 
# to default_hooks is updated too. 
import requests.models 
requests.models.default_hooks = my_default_hooks 


def response_hook(r, **kw): 
    req = r.request 
    print req.headers 

reqeuests.hooks.default_hooks()函數被調用爲每一個請求創建,並通過注入自己response事件掛接你得到每個收到的答覆。響應具有.request屬性,這是PreparedRequest實例,您可以在其中找到要查看的.headers.body屬性。

+0

看起來很有趣。我會看看。 – dangonfast 2013-05-02 14:52:54

+0

只是爲了獲取信息,我還在urrlib3問題跟蹤器上發現了這個討論:https://github.com/shazow/urllib3/issues/107。還不確定該怎麼做。 – dangonfast 2013-05-02 14:53:11

+0

@gonvaled:啊,'httplib'是Python 2,當然在Python 3中重命名爲'http.client'。 – 2013-05-02 15:40:29

相關問題