使用php登录网站

时间:2013-02-19 15:12:42

标签: php curl web-scraping web-crawler

我试图使用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);
?>

1 个答案:

答案 0 :(得分: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");

如果你打算走这条路,我会查看Using cURL in PHP to access HTTPS (SSL/TLS) protected sites这是一本很棒的教程,并会详细介绍你需要知道的一切。