Home  >  Article  >  Backend Development  >  php curl 模拟登录百度首页解决方案

php curl 模拟登录百度首页解决方案

WBOY
WBOYOriginal
2016-06-13 13:36:491144browse

php curl 模拟登录百度首页
代码如下:

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><?php $url = "https://passport.baidu.com/?login&tpl=mn";
//$url = "http://www.baidu.com/";
$cookdir = "d:/www/html/mndl/cookie.txt";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //这句是必须有的  设定为不验证证书 下面是不验证host。
curl_setopt ($ch, CURLOPT_HEADER, 0);   
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookdir); //保存cookies 发送用户浏览器信息 发送访问来源
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");
curl_setopt ($ch, CURLOPT_REFERER, "http://www.baidu.com/");
$contents = curl_exec($ch);
curl_close($ch);

/* 原始表单样式
                <input type="hidden" name="tpl_ok" value="">
                <input type="hidden" name="next_target" value="">
                <input type="hidden" name="tpl" value="mn">
                <input type="hidden" name="skip_ok" value="">
                <input type="hidden" name="aid" value="">
                <input type="hidden" name="need_pay" value="">
                <input type="hidden" name="need_coin" value="">
                <input type="hidden" name="pay_method" value="">
                <input type="hidden" id="u" name="u" value="http://www.baidu.com/">
                <input type="hidden" name="return_method" value="get">
                <input type="hidden" name="more_param" value="">
                <input type="hidden" name="return_type" value="">
                <input type="hidden" name="psp_tt" value="0">
                <input type="hidden" id="password" name="password" value="">
                <input type="hidden" name="safeflg" id="safeflg" value="">
                <input type="hidden" name="isphone" value="tpl">
*/
$post_fields = array();
$post_fields = preg_data($contents,'aid',$post_fields);
$post_fields = preg_data($contents,'isphone',$post_fields);
$post_fields['mem_pass'] = 'on'; //post 数据数组  记住我的登录状态
$post_fields = preg_data($contents,'more_param',$post_fields);
$post_fields = preg_data($contents,'need_coin',$post_fields);
$post_fields = preg_data($contents,'need_pay',$post_fields);
$post_fields = preg_data($contents,'next_target',$post_fields);
$post_fields['password'] = 'password'; //post 数据数组  记住我的登录状态
$post_fields = preg_data($contents,'pay_method',$post_fields);
$post_fields = preg_data($contents,'psp_tt',$post_fields);
$post_fields = preg_data($contents,'return_method',$post_fields);
$post_fields = preg_data($contents,'return_type',$post_fields);
$post_fields = preg_data2($contents,'safeflg',$post_fields);
$post_fields = preg_data($contents,'skip_ok',$post_fields);
$post_fields = preg_data($contents,'tpl',$post_fields);
$post_fields = preg_data($contents,'tpl_ok',$post_fields);
$post_fields['u'] = 'http://www.baidu.com/';
$post_fields['username'] = 'username'; //post 数据数组  记住我的登录状态
$post_fields['verifycode'] = '';

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookdir);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");
curl_setopt ($ch, CURLOPT_REFERER, "https://passport.baidu.com/?login&tpl=mn");
curl_exec($ch);
curl_close($ch);

$url = "http://www.baidu.com/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookdir);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");
curl_setopt ($ch, CURLOPT_REFERER, "http://www.baidu.com/n");

$contents = curl_exec($ch);print_r($contents);die;
curl_close($ch);

exit;
function preg_data($source,$chr,$array){
        preg_match('/<input>/i', $source, $matches);
        if(!empty($matches)) {
            $a = $matches[1];
        } else {
            die('Not found the '.$chr.'.');
        }
        $array[$chr]=$a;
        return $array;
}function preg_data2($source,$chr,$array){
        preg_match('/<input>/i', $source, $matches);
        if(!empty($matches)) {
            $a = $matches[1];
        } else {
            die('Not found the '.$chr.'.');
        }
        $array[$chr]=$a;
        return $array;
}
?>

 <div class="clear">
                 
              
              
        
            </div>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn