【问题标题】:Javascript check if url exists and check some information displayed on itJavascript 检查 url 是否存在并检查其上显示的一些信息
【发布时间】:2016-04-22 23:48:37
【问题描述】:

我想知道是否有任何方法可以检查 url 是否存在并检查其信息。

这里有一个例子说明我的意思:

  • 假设你在“https://de.yahoo.com/?p=us”网页中。
  • 然后使用 Javascript 检查“https://www.google.com”是否存在以及是否同时包含“google”和“yahoo”这两个词
    • 如果存在:
      • 检查页面中是否包含“google”一词:
        • 如果存在则返回“真”
        • 如果它不返回“false”
      • 检查页面中是否包含“yahoo”一词:
        • 如果存在则返回“真”
        • 如果它不返回“false”
    • 如果它不存在:
      • 返回“假”

【问题讨论】:

  • 您检查的页面需要启用 CORS,这不太可能,因此唯一的选择是创建将获取 3rd 方页面并返回结果的代理脚本。
  • 您是否向我推荐任何教程或任何示例来实现您的目的?非常感谢!
  • 您需要搜索如何使用您选择的服务器端脚本获取页面。如果是 php,则可以使用 curl 或 file_get_contents 函数。
  • 非常感谢。我会试试这个。同时也接受其他提案

标签: javascript jquery xmlhttprequest webpage


【解决方案1】:

我可能无法在此答案中为您编写完整的代码解决方案,但我会为您设置一条路径。跟着它就可以得到想要的结果。

首先,通过 JavaScript 无法获取不在您的域下或您的控制范围内的网页内容,因为浏览器会阻止它,除非在该域上启用了 CORS。

为了克服这个不足,你需要通过服务器端脚本来获取页面的内容,很可能你会使用 php。因此,在您的服务器上创建一个文件,您将使用所需的 url 作为数据向该文件发出 ajax 请求。在 jquery 中,您可以按如下方式实现:

    $.ajax('getPage.php', {
        data: 'url=your desired url' 
    }).success(function (data) {
        //Process the data
    }).error(function () {
       //Error Handler
    });

现在在 php 文件中,使用 curl 或 get_file_contents 函数从页面中获取数据

你可以在getPage.php中做这样的事情

    $page = file_get_contents($_GET['url']);
echo $page;

现在您可以使用 JavaScript 并解析通过 ajax 接收的内容并检查您的关键字,或者您可以直接在 getPage.php 文件中进行解析并返回 true 或 false。

【讨论】:

    【解决方案2】:

    如果您想在同一个域、子域、端口或协议上执行此操作,您可以为您的 AJAX 请求设置一个 JSON 响应,并假设响应将包含所有必需的信息和键:@987654323 @Ajax 应该是这样的:

    $.ajax({
               type: "GET",
               url: "YourURL",
               dataType: "json",
               success: function (data.checkResults) {
                   //do whatever
               }
           });
    

    这不能在不同的域、子域、端口或协议上完成。除非启用了 CORS,否则这种情况不太可能发生。

    备注

    由于浏览器安全限制,大多数 Ajax 请求都受制于 同源政策;请求无法成功检索 来自不同域、子域、端口或协议的数据。脚本和 JSONP 请求不受同源策略限制。

    见:Breaking-cross-domain 真的很有帮助

    跨域插件cross-domain-plugin


    CORS 无处不在 CORS Anywhere 是一个 node.js 代理,它将 CORS 标头添加到代理请求中。 要使用 API,只需在 URL 前面加上 API URL。 (支持https:见[github repository][3]

    如果你想在需要的时候自动开启跨域请求,使用如下sn-p:

    $.ajaxPrefilter( function (options) {
      if (options.crossDomain && jQuery.support.cors) {
        var http = (window.location.protocol === 'http:' ? 'http:' : 'https:');
        options.url = http + '//cors-anywhere.herokuapp.com/' + options.url;
        //options.url = "http://cors.corsproxy.io/url=" + options.url;
      }
    });
    
    $.get(
        'http://en.wikipedia.org/wiki/Cross-origin_resource_sharing',
        function (response) {
            console.log("> ", response);
            $("#viewer").html(response);
    });
    

    信用:@jherax

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 2019-04-11
      • 2014-03-02
      • 1970-01-01
      • 2021-12-10
      相关资源
      最近更新 更多