2017-01-29 90 views
0

我正在處理這個小錯誤,但我無法獲得解決方案。我對一個頁面進行身份驗證,並打開了「inspect/network」chrome工具,以查看調用的Web服務以及如何調用。我發現這是用來:錯誤500發送python請求爲鉻

enter image description here

我已經刪相關型號的網站敏感數據。所以,我必須使用python來做同樣的請求,但是我總是收到錯誤500,而服務器端的日誌沒有顯示有用的信息(只有java traceback)。

這是

response = requests.post(url,data = 'username=XXXXX&password=XXXXXXX') 

網址中有你在「一般/請求URL」的標籤在圖片中看到相同的字符串請求的代碼。 數據具有您在圖像下的「表單數據」中看到的相同字符串。

這看起來很簡單的要求,但我不能讓它的工作:(。

問候

+0

[請求文檔](http://docs.python-requests.org/en/master/user/quickstart/#make-a-request)提供了一些如何提出請求來幫助您的示例。 – trixn

+0

Hello @trixn,我已經閱讀過文檔,我沒有找到有用的東西:( – Nico

回答

0

如果你希望你的request看起來像從Chrome中來,除了發送正確data你需要指定標題以及。你得到500錯誤的原因可能是服務器端的某些設置不允許來自「非瀏覽器」的流量。

所以在你的情況下,你需要添加headers

headers = {'Accept': 'application/json, text/plain, */*', 
      'Accept-Encoding': gzip, deflate, 
      ...... # more 
      'User-Agent': 'Mozilla/5.0 XXXXX...' # this line tells the server what browser/agent is used for this request 
      } 

response = requests.post(url,data = 'username=XXXXX&password=XXXXXXX', headers=headers) 

P.S.如果你很好奇,從requests默認的標題是:

>>> import requests 
>>> session = requests.Session() 
>>> session.headers 
{'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate', 
'Accept': '*/*', 'User-Agent': 'python-requests/2.13.0'} 

正如你可以看到默認的User-Agentpython-requests/2.13.0,有的網站做阻止此類流量。