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

时间:2016-04-22 15:12:29

标签: javascript jquery xmlhttprequest webpage

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

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

  • 想象一下你在“https://de.yahoo.com/?p=us”网页。
  • 然后使用Javascript检查“https://www.google.com”是否存在,是否包含“google”和“yahoo”两个字词
    • 如果存在:
      • 检查页面中是否包含“google”字样:
        • 如果存在则返回“true”
        • 如果没有返回“false”
      • 检查页面中是否有“yahoo”字样:
        • 如果存在则返回“true”
        • 如果没有返回“false”
    • 如果不存在:
      • 返回“false”

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

"checkResults"

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

备注

  

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

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

跨域cross-domain-plugin

的插件

CORS Anywhere CORS Anywhere是一个node.js代理,它将CORS头添加到代理请求中。 要使用API​​,只需在URL前加上API URL。 (支持https:请参阅$.ajax({ type: "GET", url: "YourURL", dataType: "json", success: function (data.checkResults) { //do whatever } });

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

[github repository][3]
信用:@jherax