jQuery设置ajax请求中的User-Agent

标签: , , ,

昨天说了,我尝试过在AJAX请求中修改User-Agent,但是似乎没有效果,在FireFox下Bookmarklet仍然无法获得正确的返回值。在FireFox的帮助论坛上找到《Firefox 3.6.13 ajax setRequestHeader(‘User-Agent’, ‘…’) don’t work》这个帖子,看来也有人跟我遇到同样的问题。

从帖子的链接一直跟进,就来到了w3.org关于XMLHttpRequest的描述:

3.6.2. The setRequestHeader() method

Terminate these steps if header is a case-insensitive match for one of the following headers:

  • Accept-Charset
  • Accept-Encoding
  • Connection
  • Content-Length
  • Cookie
  • Cookie2
  • Content-Transfer-Encoding
  • Date
  • Expect
  • Host
  • Keep-Alive
  • Referer
  • TE
  • Trailer
  • Transfer-Encoding
  • Upgrade
  • User-Agent
  • Via

Note: The above headers are controlled by the user agent to let it control those aspects of transport. This guarantees data integrity to some extent. Header names starting with Sec- are not allowed to be set to allow new headers to be minted that are guaranteed not to come from XMLHttpRequest.

紫色部分说,上面的消息头只能由浏览器控制,而不能用XMLHttpRequest对象来修改,即不能通过JavaScript修改。但是这也只是w3建议的标准而已,至于浏览器遵不遵循标准,那就得看开发人员了。

为了测试,先写一个ua.php,回显User-Agent:

<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>

然后用jQuery发送ajax请求,并在发送之前用XMLHttpRequest对象的setRequestHeader方法修改User-Agent:

<script type="text/javascript">
$.ajax({
    type: "GET",
    url: "ua.php",
    success: function(data) {
        alert(data);
    },
    beforeSend: function(xhr) {
        xhr.setRequestHeader("User-Agent", "uTorrent");
    }
});
</script>

可以通过访问ua.html来进行测试,看看你的浏览器是否支持修改User-Agent。根据我的测试,IE还是跟往常一样无视标准的存在,可以用JavaScript在ajax请求中设置User-Agent,而FireFox和Chrome都无法修改User-Agent。这样看来,用JavaScript写一个六维空间流量作弊书签小工具也不是难事。

但是,昨天写的那个Bookmarklet就真的只能在IE下使用了,虽然可以写一个FireFox或者Chrome插件来解析115的下载地址。但是谁会为了区区一个网盘而大动干戈写一个浏览器插件呢?反正我没有那么闲,谁爱写谁写去。退一步讲,就算有人写了插件,又有谁会安装呢?下个解析工具还快点。

反正我很少用115网盘,要不是为了宠物小精灵,我才不会无聊到研究这种东西。然而,昨天还能下载的宠物小精灵,今天却弹出一个“视频文件禁止共享,请登录下载!”的错误,原来是“为加强知识产权的保护力度,营造健康有益的网络环境,115网盘暂时停止影视资源外链服务。”看来我得把阵地转移到还没有加强知识产权保护力度的电驴了。

赞赏

微信赞赏支付宝赞赏

随机文章:

  1. 用VBS解析JSON格式数据
  2. Suhosin,PHP保护神?
  3. WriteFile,WriteConsole和_tprintf的一些差别
  4. VB编程实现XP风格
  5. 没有main函数的C程序

2 条评论 发表在“jQuery设置ajax请求中的User-Agent”上

  1. firefly说道:

    那个“视频版权”的问题,可以解决:先注册个115帐号,登录后在禁止下载的页面点击一下“115解禁”的Bookmarklet(javascript:MoveMyFile.Show();)移动到自己收藏即可下载!

    其实我只用115下载ape音乐,速度在国内蛮不错地说,比其他网盘都要好。

    • Demon说道:

      你对Bookmarklet还真是情有独钟,按照你的方法,弹出“不能收藏已经被禁止下载的文件”。其实登陆以后手动解析就可以得到下载地址了,虽然比较麻烦。

      至于APE音乐,我可以去IPv6的BT站下载,10MB/s。但是以我电脑的烂音响,以我对音乐的白痴程度,MP3和APE没有什么区别,所以我还是听MP3,APE太占硬盘空间了。

留下回复