我正在使用cross-domain-ajax其中,使用的是YQL。
其中有这一行:
query = 'select * from html where url="{URL}" and xpath="*"';
所以我添加了用户代理,如下所示:
query = 'select * from html where url="{URL}" and xpath="*" and ua="Mozilla/5.0 (Linux; U; Android 4.0.1; ja-jp; Galaxy Nexus Build/ITL41D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"';
现在它不会再返回值了:(
我的主要 JavaScript 是这样的:
url = 'http://foofoofoofoofoofoo.com';
var content ='';
$.get(url, function(data){
content = data.responseText;
});
如何将用户代理添加到 YQL?
我之所以要这样做,是因为 HTML 源的内容根据所使用的用户代理而有所不同。
我想要使用智能手机访问时的 HTML 源代码。
最佳答案
在我看来,这是不可能的(至少对于非 HTML 数据来说)。
根据YQL reference ,YQL 访问 User-Agent Yahoo Pipes 2.0
下的“非 HTML”数据(即 css、xml 甚至 robots.txt!) .
请注意,它不关心“robots.txt”规则,因为它不是爬虫。
因此,当访问“HTML-Data”且 robots.txt 检查阻止 Yahoo Pipes 2.0
访问您的内容时,它将使用不同的用户代理获取目标页面:
Mozilla/5.0(Windows;U;Windows NT 5.1;en-US;rv:1.8.1.14)Gecko/20080404 Firefox/2.0.0.14
作为解决方法,您可以在使用 PHP 之间设置自己的代理,您可以查看 curl_setopt CURLOPT_USERAGENT (让 yahoo 托管的 YQL 查询您的代理)或在您的服务器上安装 YQL 版本(使其成为您的托管 YQL 并修改 API 以处理您的 UA 参数)。
关于javascript - YQL中可以添加UserAgent吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29345092/