抓取梦幻西游藏宝阁数据,php过验证
public function login_cbg(){
$cookieVerify = dirname(__FILE__)."/cookie.cookie";
$cookieSuccess = dirname(__FILE__)."/cookie_2.cookie";
if(!$_POST){
// 获取cookie并保存
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://xyq.cbg.163.com/cgi-bin/login.py?next_url=%2Fcgi-bin%2Fequipquery.py%3Fact%3Dbuy_show_by_ordersn%26ordersn%3D22_1458634981_24342109%26server_id%3D9&server_id=9&act=show_anon_auth_page");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieVerify);
$rs = curl_exec($ch);
curl_close($ch);
// 带上cookie抓取验证码,必须带上cookie,否则验证码不对应
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://xyq.cbg.163.com/cgi-bin/create_validate_image.py?");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieVerify);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieVerify);
$rs = curl_exec($ch);
// 把验证码在本地生成,二次拉取验证码可能无法通过验证
@file_put_contents("verifycode.jpg",$rs);
curl_close($ch);
// 手工验证码表单
echo "<form action=\"\" method=\"post\"><input type=\"text\" name=\"vcode\"><img src=\"verifycode.jpg\" /><br><input type=\"submit\" value=\"ok\"></form>";
}else{
// 登录
$ch = curl_init();
// 用户名\密码
$user = "abc123";
$pass = "123456";
$verify = $_POST["vcode"];
$url = "http://xyq.cbg.163.com/cgi-bin/login.py";
$next_url="/cgi-bin/equipquery.py?act=buy_show_by_ordersn&ordersn=22_1458634981_24342109&server_id=9";
// 返回结果存放在变量中,不输出
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieVerify);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch,CURLOPT_HTTPGET,1);
curl_setopt($ch,CURLOPT_REFERER,"http://xyq.cbg.163.com/cgi-bin/login.py?next_url=%2Fcgi-bin%2Fequipquery.py%3Fact%3Dbuy_show_by_ordersn%26ordersn%3D22_1458634981_24342109%26server_id%3D9&server_id=9&act=show_anon_auth_page");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_POST, true);
$fields_post = array("act"=>'do_anon_auth',
"next_url"=>$next_url,
"server_id"=>9,
"image_value"=>$verify);
$headers_login = array("User-Agent" => "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.108 Safari/537.36");
// $fields_string = "";
// foreach($fields_post as $key => $value){
// $fields_string .= $key . "=" . $value . "&";
// }
// $fields_string = rtrim($fields_string , "&");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers_login);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieSuccess);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields_post));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result= curl_exec($ch);
$result=mb_convert_encoding($result,'utf-8','utf-8,ASCII,GBK,GB2312');
curl_close($ch);
$this->write_file($result);
//var_dump($result);
}
}
public function write_file($content){
$path=$_SERVER['DOCUMENT_ROOT'];
$path=$path.'/application/views/contents';
if(!file_exists($path)){
mkdir($path);
}
$myfile=fopen($path.'/mh.php','w');
fwrite($myfile, $content);
fclose($myfile);
}
原理就是第一次登陆时候获取的cookie,里面包含这验证码信息。使用这个cookie去获取验证码,然后手动输入,然后post给网站,就登陆成功了。(http是无状态的)
之后输出view/mh.php文件就能看到得到整个文件,至于显示的出错的原因:
js文件内有些返回值是相对路径,那么get的路径就会错误,例如:如果我的本地配置域名是www.first.com,那么get的相对路径默认是我本地域名了,会导致get数据出错。解决办法是将本地域名配置成跟藏宝阁同一个域名,这样就会省去很多改动。
还有一个显示乱码问题,看了很多天js代码,没有发现错误。最后,是将js文件的拷到本地,使用本地的js文件,这样中文显示乱码就解决掉了,原因还没有想通。
抓取梦幻西游藏宝阁数据,php过验证相关推荐
- Fiddler 详尽教程与抓取移动端数据包
转载自:http://blog.csdn.net/qq_21445563/article/details/51017605 阅读目录 1. Fiddler 抓包简介 1). 字段说明 2). Stat ...
- php curl_setopt抓取内容,PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
通过curl_setopt()函数可以方便快捷的抓取网页(采集很方便),curl_setopt 是php的一个扩展库 使用条件:需要在php.ini 中配置开启.(PHP 4 >= 4.0.2) ...
- 用python通过selenium自动化测试抓取天猫店铺数据
用python通过selenium自动化测试抓取天猫店铺数据 运行的环境在win10,软件用的是vscode.大家平常在抓取天猫店铺的时候登陆后会需要验证,我的方法是通过谷歌插件跳过天猫的登陆. 首先 ...
- vba 提取 json某个值_VBA利用IE,抓取解禁股票数据
大家好,我们今日讲解"VBA信息获取与处理"教程中第九个专题"利用IE抓取网络数据"的第三节"利用IE,抓取解禁股票数据",这个专题是非常有 ...
- Wireshark网络抓包之抓取聊天网络数据包
一.Wireshark 1. Wireshark简介 Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料.Wi ...
- wireshark怎么抓apk 包_图解如何抓取手机的数据封包「手机抓包技术详解」
通常我们主要抓取手机等移动设备的三种数据封包:TCP.HTTP.HTTPS.本文我们主要通过图文详细讲解使用wireshark抓取手机的tcp数据包,使用Fiddler抓取手机的HTTP.HTTPS数 ...
- Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据流程分析【转】
Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据&流程分析 QQ空间说说抓取难度比较大,花了一个星期才研究清楚! 代码请移步到GitHub GitHub地址:http ...
- 微信好友大揭秘,使用Python抓取朋友圈数据,通过人脸识别全面分析好友,一起看透你的“朋友圈”...
微信:一个提供即时通讯服务的应用程序,更是一种生活方式,超过数十亿的使用者,越来越多的人选择使用它来沟通交流. 不知从何时起,我们的生活离不开微信,每天睁开眼的第一件事就是打开微信,关注着朋友圈里好友 ...
- 如何使用浏览器控制台通过JavaScript抓取并将数据保存在文件中
by Praveen Dubey 通过Praveen Dubey 如何使用浏览器控制台通过JavaScript抓取并将数据保存在文件中 (How to use the browser console ...
最新文章
- Comparable和Comparator的比较
- 计算机考试不用输入扩展名吗,本周末的 计算机等级考试,如果不想考0分,一定要花2分钟看完...
- 中心频率和一些概念解释
- CentOS 查看系统 CPU 个数、核心数、线程数
- dockerfile centos+jdk+时区设置
- 验证车牌号码是否有效
- Python:实现xlsx文件与csv文件之间相互转换
- BugKuCTF WEB 变量1
- GMQ稳定币为区块链资产在金融市场的进一步应用打开了一扇大门
- spring-boot注解详解(二)
- 前端学习(503):水平居中布局得第三种方式的优缺点
- c ++atoi函数_atoi()函数以及C ++中的示例
- 【手势识别】基于matlab GUI石头剪刀布【含Matlab源码 774期】
- 从头尝试小米手机root
- matlab中注释多行
- 最强大脑-星际迷航-JQuery 版本
- 木瓜从林。。。。。。。。。。。。。。。。。
- 小公司如何做项目管理流程
- 新年财报“开门红”,谷歌的疫情复苏红利还能吃多久?
- 如何从0到1组建敏捷团队?
热门文章
- maple化简_在线测试(Maple TA)使用须知yx - 课程中心.PDF
- PHP公司高级面试题2017,php面试题2017
- 数据库课程设计【5】-----答辩总结
- Python类型转换——数据类型转换函数大全
- android动态改变布局,Android 动态添加布局的两种方式
- 使用python连接clickhouse并发送邮件
- QT:复杂结构体不同窗口间传递
- linux关闭防火墙(临时/永久)
- optimizer.step()代表什么意思
- apple configurator 2 提取ipa文件