关于模拟登陆的问题!

[复制链接]
查看11 | 回复3 | 2021-1-27 06:49:19 | 显示全部楼层 |阅读模式
php代码如下
//参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookies
functioncurl_request($url,$post='',$cookie='',$returnCookie=0){
$curl=curl_init();
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0(compatible;MSIE10.0;WindowsNT6.1;Trident/6.0)');
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($curl,CURLOPT_AUTOREFERER,1);
curl_setopt($curl,CURLOPT_REFERER,"http://XXX
");
if($post){
curl_setopt($curl,CURLOPT_POST,1);
curl_setopt($curl,CURLOPT_POSTFIELDS,http_build_query($post));
}
if($cookie){
curl_setopt($curl,CURLOPT_COOKIE,$cookie);
}
curl_setopt($curl,CURLOPT_HEADER,$returnCookie);
curl_setopt($curl,CURLOPT_TIMEOUT,10);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$data=curl_exec($curl);
if(curl_errno($curl)){
returncurl_error($curl);
}
curl_close($curl);
if($returnCookie){
list($header,$body)=explode("\r\n\r\n",$data,2);
preg_match_all("/Set\-Cookie:([^;]*);/",$header,$matches);
$info['cookie']=substr($matches[1][0],1);
$info['content']=$body;
return$info;
}else{
return$data;
}
}
//
$url='https://login.nipic.com/
';
$post['username']="";
$post['userpass']="";
$post['imgCode']="";
$result=curl_request($url);



模拟登陆post数据徐要填写__RequestVerificationToken:这个值,能获取到,但是每刷新一次都会变!
比如$result=curl_request($url);通过这个方法获取到了__RequestVerificationToken这个值,准备填写好账号密码又通过这个方法$result=curl_request($url,$username,$pwd);提交的时候,__RequestVerificationToken这个值又刷新变了新的了。。


分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:49:19 | 显示全部楼层
print_r(get_headers('https://login.nipic.com'));Array
(
[0]=>HTTP/1.1200OK
[1]=>Cache-Control:private
[2]=>Content-Type:text/html;charset=utf-8
[3]=>Server:Microsoft-IIS/7.5
[4]=>X-AspNetMvc-Version:4.0
[5]=>Set-Cookie:__RequestVerificationToken=mUSIeMSWtbFAby3zyqK3FPtHyfiUKKfcaErCf4QgP0y-xM6cC_1XcojMKptZPPaRY3eDgsLwOnK8JJCqTDZXpMHSCGCqeZ1HKr0dudWYRu8SRImP5tFzA-2Cky81;path=/;HttpOnly
[6]=>X-Powered-By:ASP.NET
[7]=>Date:Mon,04Sep201723:46:41GMT
[8]=>Connection:close
[9]=>Content-Length:14357
)__RequestVerificationToken只通过cookie传递的,并没有看到你接收cookie的代码
回复

使用道具 举报

千问 | 2021-1-27 06:49:19 | 显示全部楼层
与sessionid不同的是token是实时发布的
session在收到sessionid后就保持sessionid不变
而token每次会话都可能变
回复

使用道具 举报

千问 | 2021-1-27 06:49:19 | 显示全部楼层
CURLOPT_COOKIEJAR是将收到的cookie保存到文件
CURLOPT_COOKIEFILE是将保存在文件中的cookie发送出去
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行