0

我尝试使用 php 自动登录网站,但这段代码没有出现任何错误,也没有给我任何结果。这是我尝试过的代码,我只得到一个空白页面,我期待登录后页面的源代码。

<?php
$fields_string=array();
$url = 'https://subscriber.hoovers.com/H/login/login.html';

$fields = array(
        "j_username"=>"XXXXXX",
"j_password"=>"XXXX"
    );

//url-ify the data for the POST
foreach($fields as $key=>$value) 
{ 
$fields_string .= $key.'='.$value.'&'; 
 }
 rtrim($fields_string,'&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields);

//execute post
$result = curl_exec($ch);
echo $result;

//close connection
curl_close($ch);
?>
4

1 回答 1

0

通过添加以下 curl 选项,我能够让您的脚本返回页面的源代码:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

默认情况下 curl 不信任 Web 服务器的证书,上面的最后一个选项告诉 curl 不要验证 Web 服务器。您可能希望将最后一个选项切换为:

curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt ($ch, CURLOPT_CAINFO, "path/to/your/cacert.pem");

如果您打算走这条路,我会查看在 PHP 中使用 cURL 访问受 HTTPS (SSL/TLS) 保护的站点,这是一个很棒的教程,它将介绍您需要了解的所有内容。

于 2013-02-28T04:04:26.403 回答