php模拟登陆360网站 爬取360指数
爬取360指数三部曲
- 获取360用户的token
- 通过账号、密码、token模拟登陆,获取cookie
- 设置cookie,爬取360指数
代码实现
<?phpclass CrawlerOf360Data
{private $curl;function __construct(){$this->init_curl_client();}function init_curl_client() {$this->curl = curl_init();curl_setopt($this->curl, CURLOPT_URL, "https://login.360.cn/");curl_setopt($this->curl, CURLOPT_TIMEOUT, 60);curl_setopt($this->curl, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');curl_setopt($this->curl, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');curl_setopt($this->curl, CURLOPT_SSL_VERIFYHOST, 0);curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER, 0);curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1);}function get360Data($name) {//step1:get token$_tokenPostFields = array('callback' => 'jQuery18309010124561026427_1524021670433','src'=> 'pcw_360index','from'=> 'pcw_360index','charset'=> 'UTF-8','requestScema'=> 'https','o'=> 'sso','m'=> 'getToken','userName'=> 'username','_'=> time() * 1000);curl_setopt($this->curl, CURLOPT_POST, true);curl_setopt($this->curl, CURLOPT_POSTFIELDS, $_tokenPostFields);$_tokenResponse = curl_exec($this->curl);$tokenJson = json_decode(preg_split('/[()]/', $_tokenResponse)[1], true);//step2:get cookies$_postLoginFields = array('callback' => 'QiUserJsonp21670482','func' => 'QiUserJsonp21670482','proxy' => 'https://trends.so.com/psp_jump.html','type' => 'normal','src'=> 'pcw_360index','from'=> 'pcw_360index','charset'=> 'UTF-8','requestScema'=> 'https','o'=> 'sso','m'=> 'login','lm'=> '0','userName'=> 'username','account'=> 'username','password'=> 'aeeb3b46c69459542c1457ea3b3a4bc0(md5 32位小写)','token'=> $tokenJson['token'],'_'=> time() * 1000);curl_setopt($this->curl, CURLOPT_POSTFIELDS, $_postLoginFields);curl_exec($this->curl);//step3:get the 360data$cookieFileContents = file_get_contents(dirname(__FILE__).'/cookie.txt');//拼接cookie字符串$cookieArr = explode("\n", $cookieFileContents);$cookie = '';foreach ($cookieArr as $data) {$dataArr = explode("\t", $data);if ($dataArr[0] == '.360.cn' || $dataArr[0] == '#HttpOnly_.360.cn') {$cookie .= "{$dataArr[5]}=$dataArr[6];";}}$url = "https://trends.so.com/index/overviewJson?area=" . urldecode('全国') . '&q=' . urldecode($name);curl_setopt($this->curl, CURLOPT_COOKIE, $cookie);curl_setopt($this->curl, CURLOPT_URL, $url);$result = curl_exec($this->curl);echo $result;}}
补充说明
- step1:
-获取token的response,如下所示,解析字符串,获取token即可:login.setSigCallback({"errno":0,"errmsg":"","token":"638f6d593b12d10b"})
- step2:
-模拟登陆中,password为md5后的32位小写字符串。
-模拟登陆成功后,会获得如下的cookie信息:
# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk..360.cn TRUE / FALSE 0 Q u%3D%25O9%25R3%25Q6%25QQ%25PO%25P4%25P8%25SQ%26n%3D%25O9%25R3%25Q6%25QQ%25PO%25P4%25P8%25SQ%26le%3DnzyhM3IcMT9hMlH0ZQDmBGxhozI0%26m%3D%26qid%3D251535385%26im%3w1_t01923d359dad425928%26src%3Dpcw_360index%26t%3D1
#HttpOnly_.360.cn TRUE / FALSE 0 T s%3D45ebc94e99d3b53fce0c57f504b2f070%26t%3D1524064257%26lm%3D%26lf%3D4%26sk%3Dd0ad528d2a9e9ef22ee3477128691bf1%26mt%3D1524064257%26rc%3D%26v%3D2.0%26a%3D0
- step3:
-在step3时,需要设置cookie,具体cookie文件中最后两行的拼接而成。
Q\T分别为key,紧跟着Q\T后面即对应的value.
eg:Q=u%3D%25O9%25R3%25Q6%25QQ%25PO%25P4%25P8%25SQ%26n%3D%25O9%25R3%25Q6%25QQ%25PO%25P4%25P8%25SQ%26le%3DnzyhM3IcMT9hMlH0ZQDmBGxhozI0%26m%3D%26qid%3D251535385%26im%3D1_t01923d359dad425928%26src%3Dpcw_360index%26t%3D1;T=s%3D45ebc94e99d3b53fce0c57f404b2f070%26t%3D1524064257%26lm%3D%26lf%3D4%26sk%3Dd0ad528d2a9e9ef22ee3477128691bf1%26mt%3D1524064257%26rc%3D%26v%3D2.0%26a%3D0;
-通过下面的链接测试
https://trends.so.com/index/overviewJson?area=全国&q=微信
可成功得到如下JSON:
{"status":0,"data":[{"query":"\u5fae\u4fe1","data":{"week_year_ratio":">1000%","month_year_ratio":">1000%","week_chain_ratio":"16.18%","month_chain_ratio":"19.46%","week_index":8674687,"month_index":8455856}}],"msg":"success"}
php模拟登陆360网站 爬取360指数相关推荐
- 【Python3.6爬虫学习记录】(九)模拟登陆QQ空间爬取好友所有留言并制作词云
前言:非常郁闷,写了第三遍了,无故404 学了五天了,熬夜搞出这份代码,虽然一度卡死几个小时,但结果是好的. 目录 第一部分 Selenium+Chrome爬取空间留言 1.1 使用说明 1.2 代码 ...
- Python模拟登陆新浪微博,爬取用户数据
目标 爬取新浪微博用户数据,包括以下字段:id,昵称,粉丝数,关注数,微博数,每一篇微博的内容,转发数,评论数,点赞数,发布时间,来源,以及是原创还是转发.(本文以GUCCI(古驰)为例) 方法 + ...
- python爬取360百科获取春晚基本信息
前言 之前看到大佬爬取维基百科获取春晚的信息,做了些数据分析,我也想跟着试一下,但是- 不过我居然在360百科上面发现了多年春晚的信息,便选择从360百科爬取. 站点分析 从网站可以看出,它的每个词条 ...
- python爬取360手机助手APP信息
这是一个爬虫软件,用来爬取360应用市场,App软件信息,现阶段代码只能爬取下载量,如需爬取别的信息,请自行添加代码. 使用方法: 1.在D盘根目录新建.tet文件,命名为App_name,并把App ...
- 爬虫学习(二)--爬取360应用市场app信息
欢迎加入python学习交流群 667279387 爬虫学习 爬虫学习(一)-爬取电影天堂下载链接 爬虫学习(二)–爬取360应用市场app信息 代码环境:windows10, python 3.5 ...
- python360指数_Python学习之单线程爬取360看看所有电视剧
博主最近在跟@小伟学习Python,刚好有一个学习任务是爬取360影视的所有电视剧和电影的图片,播放链接,评分,名字.这个项目使用分布式+队列来做最好,但是我还没学到,所以勉强使用单线程来做一做看.以 ...
- python豆瓣影评_教你用python登陆豆瓣并爬取影评
教你用python登陆豆瓣并爬取影评 一起来 日常学python 这是我的第二篇原创文章 在上篇文章爬取豆瓣电影top250后,想想既然爬了电影,干脆就连影评也爬了,这样可以看看人们评价的电影,再加上 ...
- 网站爬取工具_浅析阻碍网站内容被蜘蛛抓取的原因有哪些?
众所周知,在搜索引擎中存在的蜘蛛其实就是一段代码,这段代码通过在各个网站爬取,以便于网站内容能够被搜索引擎收录.不过一般蜘蛛爬取是按照一定规则进行的,如果网站中出现了一些爬取障碍,那么蜘蛛爬取就会被打 ...
- 网站爬取工具_Python项目:结合Django和爬虫开发小说网站,免安装,无广告
前言 很多喜欢看小说的小伙伴都是是两袖清风的学生党,沉迷小说,不能自拔.奈何囊中甚是羞涩,没有money去看正版小说,但是往往这些免费的小说网站或者小说软件,随之而来的是大量的广告. Python嘛, ...
最新文章
- Spring框架简介
- OpenGL 对象的概述
- 【渝粤教育】国家开放大学2018年春季 0177-22T电机学(二) 参考试题
- 1085 PAT单位排行 (25 分
- 车纷享:基于阿里云HBase构建车联网平台实践
- 53 FI配置-财务会计-固定资产-折旧-维护折旧码
- Blueprint的实现
- 切片 go 去除第一个_golang学习笔记--切片slice 与数组 arr
- FFMPEG结构体分析:AVIOContext
- CentOS 7.0 关闭防火墙
- Html 5 Input type=range 滑动条
- HDU 4475 HDOJ Downward paths
- 白光led 计算机模拟,白光LED在TracePro中的建模及仿真
- iOS应用程序安全风险及漏洞解析
- 《Word中从正文开始设置页码》
- 数据中心白皮书 2022东数西算下数据中心高性能计算的六大趋势八大技术
- 个人开发者应用如何接入主流微信和支付宝支付
- PLC按时间启停设备运转,设备到期停止设备运转
- SDN(Software Defined Network) 软件定义网络学习
- 集成平台Ensemble环境搭建(HealthShare) 及MIRROR镜像(主备机)的配置
热门文章
- 2021天梯赛 L2-040 哲哲打游戏 题解
- 攻防世界web高手进阶区ics-05(XCTF 4th-CyberEarth)WriteUp
- vid2vid 代码调试+训练+测试(debug+train+test)(二)训练篇
- STM32F0项目进阶之实时时钟DS1307
- CZSC 官方文档(0.6.8)
- 高通 AEC Finale Luma计算过程
- 科大奥锐密立根油滴实验数据_(最新)大学物理实验报告系列之密立根油滴实验...
- 网盘文件管理系统——java实现
- 【转】NLP 的巨人肩膀(下)
- PDFBox操作pdf文件转换为图片