我正在尝试编写一个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
?
答案 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)