使用Python请求模拟ajax POST调用

我正在做一个项目,其中我的解析器 窃取了 有关特定站点上每个视频的数据,并将其保存到我的数据库中。除了指向隐藏视频的完整链接之外,我已完成所有工作。

有一个播放器,它会自动从页面加载开始。我发现启动播放器的JavaScript代码:

function getVidData(resolution, init) {

<< some code here >>

jQuery.ajax({type: 'POST', url: '/ajaxdata.php', dataType: 'json', data: 'mod=videodata&vid=48902&res=' + resolution, success: function (response) {

if (response.error != '' && response.error != undefined) {

<< error handling code here >>

} else {

StartPlayer(response.width, response.height, response.filename);

}

} });

}

通话后,因此,如果没有错误发现它开始使用播放器 从 。那就是我所需要的。

我重新检查了 的呼叫:

http://<< SITE_URL >>/ajaxdata.php

POST /ajaxdata.php HTTP/1.1

Host: << SITE_URL >>

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0

Accept: application/json, text/javascript, */*; q=0.01

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

X-Requested-With: XMLHttpRequest

Referer: << VIDEO_PAGE >>

Content-Length: 31

Cookie: << COOKIE VALUES >>

DNT: 1

Connection: keep-alive

Pragma: no-cache

Cache-Control: no-cache

mod=videodata&vid=48901&res=640

HTTP/1.1 200 OK

Server: nginx/1.5.9

Date: Tue, 22 Apr 2014 16:30:06 GMT

Content-Type: text/html

Transfer-Encoding: chunked

Connection: keep-alive

Expires: Tue, 22 Apr 2014 16:30:05 GMT

Cache-Control: no-cache

Pragma: no-cache

Content-Encoding: gzip

因此它使用特定的参数调用 ,作为回应,我应该找到文件名。

但是,此Python代码对我绝对没有任何回报(内容或错误)

import requests

url = "http://LALLALAA/ajaxdata.php"

data_video = {"mod": "videodata", "vid": "48901", 'res': '640'}

s = requests.Session()

s.post(login_url, data=login_data) # Authentication

content = s.post(url, data=data_video)

print content.content

可变内容仅打印“ Response [200]”

现在,我完全被卡住了,如果有人可以指出我所做的错误或我可以尝试的解决方案,我将不胜感激。

谢谢

回答:

正如Martijn Pieters所建议的那样,我一个接一个地尝试了标头,发现这种组合现在可以使用:

import requests

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0',

'Accept': 'application/json, text/javascript, */*; q=0.01',

'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',

'X-Requested-With': 'XMLHttpRequest'

}

s = requests.Session()

s.post(login_url, data=login_data)

content = s.post(url, data=data_video, headers=headers)

我感谢所有人,特别是Martijn Pieters

以上是 使用Python请求模拟ajax POST调用 的全部内容, 来源链接: utcz.com/qa/412476.html

回到顶部