2016-11-23 84 views
0

我正在嘗試編寫一個爲我登錄到網站並下載消息的Python腳本。我正在使用「請求」庫,併成功登錄會話爲什麼python請求獲得與Ajax不同的結果

該網站使用js/Ajax來下載消息頁面加載後的實際消息客戶端,並使用分頁來實現無限的消息列表效果。

郵件頁面url的格式爲https://website.com/messages。該網頁包含一個Ajax調用retrives的形式交往是這樣的:

$.ajax({ 
     url: '/messages?mailbox=' + mailbox + optional params 
    }).done(function(data) { 
     urlLazyLoading = data.next_page_url; 
     $.each(data, function(i, v) { 
      //from this point on, data for each message can be 
      //accessed using the v object as such: 
      //v.sender, v.date, v.last_message, etc 
      //and the <ul> element is populated with '<li>'s 

但是,當我嘗試訪問相同的URL在python(我的loggedIn後)這樣:

session.get('https://website.com/messages?mailbox=inbox') 

代替用消息數據獲取json響應,我得到相同/原始消息頁面。

在上面的代碼中傳遞給ajax的唯一參數是url,所以通過defult它應該只是做一個簡單的GET請求,這正是我正在做的。

是否有可能代碼中的其他地方ajax被設置爲默認爲POST或有其他一些非默認設置?

或者是服務器以某種方式檢測到一個請求來自ajax,另一個來自會話?也許使用user-agent

回答

0

Got it!

{ 'X-請求-使用': '的XMLHttpRequest'}

Ajax的默認發送一個報頭值

我補充說,在和中提琴

headers = {'X-Requested-With': 'XMLHttpRequest'} 
    r = s.get("https://website.com/messages?mailbox=inbox",headers=headers) 
相關問題