PHP模拟登陆手记

//F12中的preserve log记得勾选,(页面刷新不会清空Network)

//打码可以使用打码兔

代码demo

function login_get($url, $httpHeader)

{

$curl = curl_init();//初始化curl模块

curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址

curl_setopt($curl,CURLOPT_HEADER,1); //显示响应头header信息

curl_setopt($curl, CURLOPT_NOBODY, 1); //不显示显示文档document信息

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出

curl_setopt($curl, CURLOPT_ENCODING, "gzip"); //指定gzip压缩

$Cookie = 'Cookie:name=1;session_id=2;';

$header4 = array(

'Accept:image/webp,image/*,*/*;q=0.8',

'Accept-Encoding:gzip, deflate, sdch, br',

'Accept-Language:zh-CN,zh;q=0.8',

'Connection:keep-alive',

$Cookie,

'Host:account.xiaomi.com',

'Referer:www.xxx.com',

'User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',

);

curl_setopt($curl, CURLOPT_HTTPHEADER, $httpHeader); //指定请求头

// curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie_xm.cookie');//连接结束后,比如,调用 curl_close 后,保存 cookie 信息在指定的文件中。

// curl_setopt($curl, CURLOPT_COOKIEFILE, $cookieFile); //读取cookie 参数为文件地址

// curl_setopt($curl, CURLOPT_COOKIE, $cookieStr); //读取cookie 参数为字符串

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //SSL 报错时使用

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); //SSL 报错时使用

$rs = curl_exec($curl);//执行cURL

// curl_setopt($curl, CURLINFO_HEADER_OUT, TRUE); //打印请求头

// $request= curl_getinfo($curl); //得到请求头

// file_put_contents("./request.txt", $request['request_header'].PHP_EOL, FILE_APPEND);

//要提交的信息

file_put_contents("./login.txt", $rs.PHP_EOL, FILE_APPEND);

preg_match('/cookiename=(.*);/iU',$rs,$pass_trace);//正则匹配到需要的cookie

// file_put_contents("./rs.txt", $str.PHP_EOL, FILE_APPEND);

curl_close($curl);//关闭cURL资源,并且释放系统资源

return cookiename[0];

}

分离curl header和body

$rs = curl_exec($curl);//执行cURL

//CURLINFO_HEADER_SIZE获取header的size去截取

if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == '200') {

$headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE);

$header = substr($rs, 0, $headerSize);

$body = substr($rs, $headerSize);

}

post方式提交

$post2 = array (

'user' => 'hojun',

'pwd' => '123456#',

);

curl_setopt($curl, CURLOPT_POST, 1);//post方式提交

//http_build_query 使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求字符串

curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));

欢迎关注我的大鱼号:好奇如猫

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180427A1ZS7900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券