gpt4 book ai didi

javascript - 检查两个 URL 是否是同一个页面

转载 作者:行者123 更新时间:2023-11-30 17:48:24 26 4
gpt4 key购买 nike

我目前正在开发一个从给定 URL 中提取各种数据的程序。为此,我有一个函数可以梳理 URL 并构建源代码中所有位置的数组。这非常有效,我已经设法过滤页面以检查是否有文件,而不是在页面上等。

我的麻烦是我已经在一些网站上测试过这个,这些网站有一个菜单,菜单选项下有子页面。导航栏上的主要选项将有一个页面值,子导航上的第一个选项将是同一页面,但在 URL 的末尾有一个值(主要用于在 javascript 之间切换)。我尝试对页面进行编码并进行比较(以缩短处理时间),但在某些网站上,URL 被放入表单字段中。

Example:

Option1 - www.example.com/page1
- first opt - www.example.com/page1?t=1
- second opt - ww.example.com/page1?t=2

由于某些网站仅使用这些值而其他页面使用 JS,因此无法从表面上去除附加标签。由于 URL 在技术上是不同的,有没有一种方法可以检查页面是否相同,即使它们位于不同的 URL 上?

最佳答案

在您的情况下,我可能建议您只检索 header 并比较 Content-Length header 。

    function content_length($url){
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);

$data = curl_exec($ch);
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);

curl_close($ch);
return $size;
}

function filterURL($url) {
// Make urls similar as possible. E.g. strip all after hash-symbol.
return substr($url, 0, strpos($url, "#"));
}

$url1 = 'http://example.com/page/?foo=1#bar';
$url2 = 'http://example.com/page/?foo=2#bar2';

if (content_length(filterURL($url1)) == content_length(filterURL($url1))) {
print "Same";
} else {
print "Different";
doWhatYouNeedToDo();
}

这不能保证页面相同或不同,但不要求您下载整个页面。

关于javascript - 检查两个 URL 是否是同一个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19622768/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com