php-ccurl代码不适用于特定的站点,尽管脚本可以


php curl code is not working on specific sites although scripts do

我已经创建了这个代码:

<?php
    $requesturl = "https://www.google.com/?gws_rd=ssl";
    $ch = curl_init($requesturl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    echo curl_exec($ch);
    curl_close($ch);
?>

大约一个月前,我创建了这个脚本,它运行得很好,但现在它在许多网站上运行良好,但在谷歌甚至youtube上都不起作用(我所说的"不起作用"是指它在加载时保持库存,即圆圈在旋转,没有发生任何事情)
我可以从浏览器访问这两个,没有任何问题!

我想出了这样一个想法,这个问题又会自行卷曲
我将glype(代理脚本)复制到EasyHP(用于本地托管)的目录中,并将https://www.google.com/?gws_rd=ssl放入框中,然后点击回车键。我看到它在工作,所以卷曲没有问题。

在这之后,我认为问题出在我的代码上
所以我决定在互联网上的真实主机上测试它,有趣的是,我发现我的代码在那里运行得很好!它在浏览器上回显谷歌。

现在我不知道了。。我甚至清除了dns缓存,但没有任何帮助
我该怎么办?

您可以/应该测试很多东西
我从基本的tcp连接开始:如果你可以使用套接字扩展,你可以尝试

<?php
$host = 'www.google.com';
echo "<p>gethostbyname</p>'r'n"; flush();
$addr = gethostbyname($host);
if ( $addr===$host ) {
    die('could not resolve host');
}
echo "<p>socket_create</p>'r'n"; flush();
$socket=socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ( !$socket ) {
    die('could not create socket');
}
echo "<p>socket_connect</p>'r'n"; flush();
if ( !socket_connect($socket, $addr, 443) ) {
    die('could not coennect socket');
}
echo 'Done.';

以检查是否可以解析主机名并建立连接。