我正在做一个项目,其中我的解析器 窃取了 有关特定站点上每个视频的数据,并将其保存到我的数据库中。除了指向隐藏视频的完整链接之外,我已完成所有工作。 有一个播放器,它会自动从页面加载开始。我发现启动播放器的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); } } }); }
通话后,因此,如果没有错误发现它开始使用播放器 的文件名 从 响应 。那就是我所需要的。 我重新检查了 Live HTTP标头中 的呼叫:
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