Javascript检查url是否存在并检查其上显示的一些信息

Javascript check if url exists and check some information displayed on it

本文关键字:检查 显示 信息 url 是否 存在 Javascript      更新时间:2023-09-26

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

这里有一个关于我的意思的例子:

  • 想象一下,您在"https://de.yahoo.com/?p=us"网页中。
  • 然后使用Javascript检查"https://www.google.com"是否存在,以及它是否同时包含"google"和"yahoo"这两个词
    • 如果存在:
      • 检查页面中是否有"谷歌"一词:
        • 如果存在,则返回"true"
        • 如果它没有返回"假"
      • 检查页面中是否有"yahoo"一词:
        • 如果存在,则返回"true"
        • 如果它没有返回"假"
    • 如果不存在:
      • 返回"假"

在这个答案中为你编写一个完整的代码解决方案对我来说可能是不可能的,但我会为你设置一条路径。通过遵循它,您可以获得所需的结果。

首先,通过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。

如果要在同一域、子域、端口或协议上执行此操作,则可以对 AJAX 请求设置 JSON 响应,假设响应将包含所有必需的信息以及键: "checkResults" Ajax 看起来像这样:

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

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

笔记

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

SEE:打破跨域真的很有帮助

域跨域插件


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

如果要在需要时自动启用跨域请求,请使用以下代码片段:

$.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