php curl cookie模拟登录目标网站,登录后没能跟随302跳转,cookie已经获得.代码如下. 困扰很久,希望高手不吝赐教

PHP用CURL实现网站模拟登陆 - 为程序员服务
为程序员服务
PHP用CURL实现网站模拟登陆
PHP用CURL实现网站模拟登陆
详细代码如下:
$cookie_file=tempnam('./temp','cookie');
$login_url='/bbs/logging.php?action=login&loginsubmit=yes';
$post_fields='username=用户名&password=用户密码&referer=index.php&formhash=24eca8af&loginfield=username&questionid=0&loginsubmit=登录';
$ch = curl_init($login_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,$cookie_file);
curl_exec($ch);
curl_close($ch);
$url='/bbs';
$ch =curl_init($url);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file);
$contents=curl_exec($ch);
curl_close($ch);
您可能的代码
相关聚客文章
相关专栏文章PHP CURL获取cookies模拟登录的方法
字体:[ ] 类型:转载 时间:
利用PHP的curl函数实现模拟登录的方法。
要提取google搜索的部分数据,发现google对于软件抓取它的数据屏蔽的厉害,以前伪造下 USER-AGENT 就可以抓数据,但是现在却不行了。利用抓包数据发现,Google 判断了 cookies,当你没有cookies的时候,直接返回 302 跳转,而且是连续几十个302跳转,根本抓不了数据。因此,在发送搜索命令时,需要先提取 cookies 并保存,然后利用保存下来的这个cookies再次发送搜索命令即可正常抓数据了。这其实和论坛的模拟登录一个道理,先POST登录,获取cookies并保存,然后利用这个cookies访问就可以了。PHP 代码如下: 代码如下:&?phpheader('Content-Type: text/ charset=utf-8');$cookie_file = dirname(__FILE__).'/cookie.txt';//$cookie_file = tempnam("tmp","cookie");//先获取cookies并保存$url = ".hk";$ch = curl_init($url); //初始化curl_setopt($ch, CURLOPT_HEADER, 0); //不返回header部分curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //返回字符串,而非直接输出curl_setopt($ch, CURLOPT_COOKIEJAR,& $cookie_file); //存储cookiescurl_exec($ch);curl_close($ch);//使用上面保存的cookies再次访问$url = ".hk/search?oe=utf8&ie=utf8&source=uds&hl=zh-CN&q=qq";$ch = curl_init($url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); //使用上面获取的cookies$response = curl_exec($ch);curl_close($ch);echo $?&
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具> php curl模拟登录 https://login.yahoo.co.jp 的有关问题
php curl模拟登录 https://login.yahoo.co.jp 的有关问题
stefanie118 & &
发布时间: & &
浏览:27 & &
回复:3 & &
悬赏:0.0希赛币
php curl模拟登录 的问题代码我基本上写出来了,但是抓去的页面是让输入验证码的代码如下:private function login(){ &
$is_login = 0; &
$rurl = &;; &
//取随机码 &
$ch = curl_init(); &
curl_setopt($ch, CURLOPT_URL, &;); &
curl_setopt($ch, CURLOPT_COOKIEJAR, $this-&cookie_jar); &
curl_setopt($ch, CURLOPT_HEADER,1); &
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); &
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); &
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); &
$tmp = curl_exec($ch); &
//curl_close($ch); &
preg_match('/&input type=&hidden& name=&.challenge& value=&(.* )&&/i', $tmp, $mchallenge); &
preg_match('/&input type=&hidden& name=&.u& value=&(.* )&&/i', $tmp, $mu); &
preg_match('/&input type=\&hidden\& name=\&\.albatross\& value=\&(.+ )\&&/is',$tmp,$malbatross); &
$challenge = $mchallenge[1]; &
$u = $mu[1]; &
$albatross = $malbatross[1]; &
//print_r($cookie_jar); &
//print_r($arr); &
//$hash_passwd = md5(md5($this-&user_pwd).$challenge); &
//第一步:初步登陆 &
//$ch = curl_init(); &
curl_setopt($ch, CURLOPT_URL, &;); &
curl_setopt($ch, CURLOPT_POST, 1); &
curl_setopt($ch, CURLOPT_POSTFIELDS, &.albatross=&.$albatross.&&.ct=&.&&.tries=1&.src=&.md5=&.hash&.js=&.last=&promo=&.intl=jp&.bypass=&.partner=&.u=&.$u.&&.v=0&.challenge=&.$challenge.&&.yplus=&.emailCode=&pkg=&stepid=&.ev=&hasMsgr=0&.chkP=Y&.done=&.$rurl.&&.pd=&.protoctl=&login=&.$this-&username.&&passwd=&.$this-&password);// &
curl_setopt($ch, CURLOPT_COOKIEJAR, $this-&cookie_jar); &
curl_setopt($ch, CURLOPT_HEADER,1); &
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); &
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); &
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); &
$str = curl_exec($ch); &
curl_close($ch); &
//判断是否登录成功 &
if (strpos($str, &HTTP/1.1 302 Found&) !== false){ &
$is_login = 1; &
return $is_ &
}用户名和密码都有, 但是模拟登录完是让输入验证码的,很郁闷,soso的大侠们 帮解决下吧,里的源代码
name=&.albatross&
这个变量和登录有关系,每次刷新页面都会变化, 所以我 估计跟它有关,
好像不成功~~
Stefanieonly & &
& & (0)(0)這個費事費力的事情除非有人做過,要不然你可能不能夠在這裏得到答案
stefaniey & &
& & (0)(0)输入验证码的无解了。stefaniekp & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&网页设计教程与开发
提供各种常见网页效果
提供各种各样的设计教程
装扮QQ,让QQ变得更酷
设计参考,提高自升水平
学习服务器和操作系统
提供各种素材和工具
收藏学习资料
您现在的位置:&&>>&&>>&&>>&&>>&&>>&正文
php模拟登陆的实现方法分析
&这篇文章主要介绍了php模拟登陆的实现方法,实例分析了snoopy与curl两种实现方法,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例分析了php模拟登陆的实现方法。分享给大家供大家参考。具体分析如下:
php模拟登陆的实现方法,这里分别列举两种方法实现模拟登陆人人网。具体实例代码如下:
1)使用snoopy模拟登陆:
set_time_limit(0);
&Snoopy.class.php&;
$snoopy=new
$snoopy-&referer='http://www.jb51.net/';
$snoopy-&agent=&Mozilla/5.0
(Windows NT 6.1; rv:22.0) Gecko/ Firefox/22.0&;
$submit_vars['email']
='登陆账号';
$submit_vars['password']
='登陆密码';
$url='http://www.jb51.net/test/Login.php';//登陆数据提交的URL地址
$snoopy-&submit($url,$submit_vars);
$snoopy-&fetch(&http://www.jb51.net/&);//希望获取的页面数据
$snoopy-&//m.jb51.net
2)使用curl模拟登陆:
set_time_limit(0);
$cookie_file=tempnam('./tmp','cookie');//tmp目录需要先建立好
$ch=curl_init();
$login_url='http://www.jb51.net/PLogin.do';
$curlPost=&email=登陆账号&password=登陆密码&;
curl_setopt($ch,CURLOPT_URL,$login_url);
//启用时会将头文件的信息作为数据流输出
curl_setopt($ch,CURLOPT_HEADER,0);
//设定是否输出页面内容
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POST,1);
//设置请求发送方式,post或get,CURLOPT_POST或CURLOPT_GET
curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
//保存cookie
curl_exec($ch);
curl_close($ch);
$ch=curl_init();
$login_url2=&http://www.jb51.net/&;
curl_setopt($ch,CURLOPT_URL,$login_url2);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,0);
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file);
//读取cookie
curl_exec($ch);
curl_close($ch);
希望本文所述对大家的php程序设计有所帮助。
转载请注明:破洛洛(谢谢合作)
上一篇文章: 下一篇文章:
网友评论:
[][][][][][][][][][]

我要回帖

更多关于 curl cookie 模拟 的文章

 

随机推荐