javascript - 使用 Python 请求模拟 ajax POST 调用

标签 javascript php python ajax


我正在做一个项目,我的解析器 steals 获取有关特定站点上每个视频的数据并将其保存到我的数据库中。除了隐藏视频的完整链接外,我已经完成了所有操作。
有一个播放器,它会在页面加载时自动启动。我找到了启动播放器的 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);
        }
    }  });
}

所以在调用之后如果没有发现错误,它会使用 response 中的 filename 启动播放器。这就是我需要的。
我重新检查了 Live HTTP Headers 中的调用:

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

因此它调用带有特定参数的 ajaxdata.php 作为响应我应该找到文件名。
然而,这段 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 .

关于javascript - 使用 Python 请求模拟 ajax POST 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23226074/

相关文章:

php - Mysql 和 Laravel 2 列上的多个 where 子句

php - 我应该使用 phpmyadmin 还是 php 将内容添加到数据库?

PHP 在单个数字前添加前导零,即时

SUD 的 Python 要求

使用 Kill 进程进行 Python 测试

javascript - 只能对 div 进行排序(如果它们的主体中没有很多标签)

javascript - 使用正则表达式将困惑的完整用户名和详细信息列表转换为简单的 samAccountname

javascript - 如何使用 JavaScript 将小数点按点分割成整数?

javascript - 如何在 JavaScript 的回调中调用 typescript 函数

python - Bokeh 未使用所有可用空间