2016-11-23 70 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) 
相关问题