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

因此,我正在运行 URL 列表以检查它们是否已失效或重定向,然后记录结果。我也有一些例外,将重定向到 godaddy.com 或 hugedomains.com 等地方的域标记为已死,因为它们基本上是这样。

我的问题是,它是参差不齐的。例如,域

  • custommarbleproducts.com

  • danielharderandsons.com

重定向到这些:

我尝试过滤掉 "?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';

    }


有没有人有任何想法使这更可靠?


皈依舞
浏览 232回答 1
1回答

翻阅古今

也许比较原始 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";}}
打开App,查看更多内容
随时随地看视频慕课网APP