我正在使用cURL脚本检查是否有网站可用。
但它不能正常工作;根据它,所有http://的url都可用。为什么会这样?
这是我的代码:

function isDomainAvailible($domain)
{
    //check, if a valid url is provided
    if(!filter_var($domain, FILTER_VALIDATE_URL))
    {
        return false;
    }

    //initialize curl
    $curlInit = curl_init($domain);
    curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
    curl_setopt($curlInit,CURLOPT_HEADER,true);
    curl_setopt($curlInit,CURLOPT_NOBODY,true);
    curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);

    //get answer
    $response = curl_exec($curlInit);

    curl_close($curlInit);

    if ($response) return true;

    return false;
    }

谢谢您!

最佳答案

从代码来看,您似乎要么是在一个透明的web代理后面,要么是被一个非标准的名称服务器服务;
透明代理将代表您发出请求并返回其响应。如果是这样的话,似乎在一个不存在的位置的情况下,它仍然会返回一个200状态代码。
非标准名称服务器可能会返回承载自定义登录页的Web服务器的IP地址(考虑“待售域”),而不是返回查找错误。
通过设置适当的选项,可以请求curl提供更多调试信息:

curl_setopt($ch, CURLOPT_VERBOSE, 1);

最后,检查返回的主体,查看返回的内容。从这里可以很明显地看出上面的哪一个场景适用于这里。

07-24 09:21