为了账号安全,请及时绑定邮箱和手机立即绑定

检查 URL 是否已失效或重定向,并不总是有效

检查 URL 是否已失效或重定向,并不总是有效

PHP
皈依舞 2021-07-01 07:47:33
因此,我正在运行 URL 列表以检查它们是否已失效或重定向,然后记录结果。我也有一些例外,将重定向到 godaddy.com 或 hugedomains.com 等地方的域标记为已死,因为它们基本上是这样。我的问题是,它是参差不齐的。例如,域custommarbleproducts.comdanielharderandsons.com重定向到这些:http://danielharderandsons.com/?reqp=1&reqr=http://custommarbleproducts.com/?reqp=1&reqr=我尝试过滤掉 "?reqp=1&reqr=" 并且它有时会起作用。我可以运行脚本,在十个死/重定向 URL 中,四个将被标记为死,然后重新运行并有三个或五个标记为死(结果不同,上次标记为死的这次可能不会) ,我正在寻找更一致的结果。下面是函数:function get_url_status($url) {$cookie = realpath(dirname(__FILE__)) . "/cookie.txt";file_put_contents($cookie, "");$ch = curl_init($url);curl_setopt($ch, CURLOPT_NOBODY, 1);if ($curl = curl_init()) {    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // follow redirects    curl_setopt($ch, CURLOPT_AUTOREFERER, 1); // set referer on redirect    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0');    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);    curl_setopt($ch, CURLOPT_TIMEOUT, 30);    curl_exec($ch);    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);    $final_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);    curl_close($ch);    if ((strpos($final_url, "hugedomains.com") !== FALSE) ||            (strpos($final_url, "namecheap.com") !== FALSE) ||            (strpos($final_url, "uniregistry.com") !== FALSE) ||            (strpos($final_url, "afternic.com") !== FALSE) ||            (strpos($final_url, "buydomains.com") !== FALSE) ||            (strpos($final_url, "/?nr=0") !== FALSE) ||            (strpos($final_url, "?reqp=1&reqr=") !== FALSE) ||            (strpos($final_url, "godaddy.com") !== FALSE)) {        return 'dead';    }有没有人有任何想法使这更可靠?
查看完整描述

1 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

也许比较原始 URL 和最终 URL 的域:


$orig_host = parse_url($url, PHP_URL_HOST);

$final_host = parse_url($final_url, PHP_URL_HOST);


$len = strlen($orig_host);


if (substr($final_host, 0 - $len) === $orig_host) {

    echo "$final_host ends with $orig_host";

}

}


查看完整回答
反对 回复 2021-07-02
  • 1 回答
  • 0 关注
  • 231 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信