【问题标题】:Is it possible to add UserAgent to YQL?是否可以将 UserAgent 添加到 YQL?
【发布时间】:2015-03-30 11:31:11
【问题描述】:

我正在使用 cross-domain-ajax,其中正在使用 YQL。
里面有这行:

query = 'select * from html where url="{URL}" and xpath="*"';

所以我添加了 user-agent,如下所示:

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 源代码。

【问题讨论】:

    标签: javascript jquery yql


    【解决方案1】:

    在我看来这是不可能的(至少对于非HTML数据)。

    根据YQL reference,YQL在User-AgentYahoo Pipes 2.0下访问'non-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 参数)。

    【讨论】:

    • 感谢您的最佳回答!
    猜你喜欢
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 2017-11-02
    • 2014-08-16
    • 2023-04-02
    • 1970-01-01
    • 2020-12-18
    相关资源
    最近更新 更多