为什么python请求得到的结果与Ajax不同

时间:2016-11-23 20:50:24

标签: javascript jquery ajax

我正在尝试编写一个Python脚本,为我登录网站并下载我的消息。我正在使用"请求"库,并成功登录会话

网站使用js / Ajax在加载消息页面后下载客户端的实际消息,并使用分页来实现无限的消息列表效果。

消息页面网址采用https://website.com/messages的形式。并且该页面包含一个Ajax调用,可以像这样重现这些消息:

    $.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

但是当我尝试访问python中的相同网址时(在我登录后):

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

而不是使用消息数据获取json响应,我得到相同/原始消息页面。

上面代码中传递给ajax的唯一参数是url,所以通过defult它应该只是做一个简单的GET请求,这就是我正在做的事情。

是否有可能代码中的其他地方ajax被设置为默认为POST或具有其他一些非默认设置?

或服务器是否以某种方式检测到一个请求来自ajax而另一个来自会话?也许使用user-agent

1 个答案:

答案 0 :(得分:0)

知道了!

Ajax默认发送标头值:

{&#39; X-Requested-With&#39;:&#39; XMLHttpRequest&#39;}

我在和中提琴中添加了

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