网络爬虫系列(一):chrome抓包分析
网络爬虫系列(一):chrom抓包分析
- 1、测试环境
- 2、网页分析
- (1) 网页源代码分析
- (2) 网络抓包分析
1、测试环境
浏览器:chrome浏览器
网页分析工具 :开发者工具
2、网页分析
(1) 网页源代码分析
我们知道,网页有静态网页和动态网页之分,很多人会误认为静态网页就是没有动态效果的网页,其实这种说法是不对的。
- 静态网页是指没有后台数据库的不可交互网页 ,常以
.htm
、html
、.xml
为后缀。 - 动态网页 是指能与后台数据库进行数据传递的可交互网页,常以
.aspx
、.asp
、.jsp
、.php
为后缀。
另外,目前很多动态网站都采取了 异步加载技术 (Ajax),这就是很多时候抓取到的源代码和网站显示的源代码不一致的原因。
至于如何爬取动态网页,这里提供两种方法:
一是下面即将讲到的通过抓包分析 Ajax 请求
二是利用 Selenium 等工具进行动态渲染
下面我们以京东商品为例,分析如何通过 Chrome 进行抓包,我们首先打开某个商品的首页
https://item.jd.com/100003688077.html
来到网页空白处单击鼠标右键,选择查看网络源代码或者使用快捷键 Ctrl+U直接打开)
请注意,查看网页源代码 得到的是网站最原始的源代码,也就是通常我们抓取到的源代码
再次来到网页空白处单击鼠标右键,选择 检查(或者使用快捷键 Ctrl+Shift+I/ F12直接打开)
请注意,检查 得到的是是经过 Ajax 加载和 JavaScript 渲染的源代码,也就是当前网站显示内容的源代码
经过对比之后,我们可以发现两者的内容是不一样的,这就是 异步加载技术 (Ajax) 的典型例子
就目前来说至少京东商品的价格是通过异步加载生成的,这里提供三种方法判断网页中某个内容是否为动态生成:
一是分析查看网页源代码 生成的源代码,可以在其中寻找动态请求的典型语句,也可以将其与 检查 生成的源代码进行比较
二是通过以下将要讲解的网页抓包分析来判断,这种方法最为常用,应当好好掌握
三是一种取巧的方法,就是禁用 Chrome 浏览器的 JavaScript 加载。
具体可以在 Chrome 的地址栏中输入 chrome://settings/content/javascript 来到 JavaScript 的设置页面
然后将 JavaScript 的选项关闭,这时候重新刷新网页,就会看到原来显示价格的地方出现了空白。这就表明原来的价格是通过 JavaScript 动态生成的
(2) 网络抓包分析
我们还是以京东商品为例进行讲解,打开某个商品的首页,尝试抓取动态加载的商品价格数据
https://item.jd.com/100003688077.html
使用快捷键 Ctrl+Shift+I 或 F12打开开发者工具,然后选择 Network 选项卡 进行抓包分析
此时按下快捷键 F5刷新页面,可以看到开发者工具中出现了各种各样的包,我们使用 Filter 对包进行过滤
首先,我们选中 Doc,可以看到列表中只出现了一个包
一般来说,这个就是浏览器接收到的第一个包,用于获取请求网站的原始源代码
点击 Header 可以看到它的头部参数设置
点击Response 可以看到返回的源代码,容易发现,它其实和 查看网页源代码 返回的信息是一致的
下面让我们重新回到正题,对于动态加载的抓包分析,主要看XHR 和 JS 选项卡即可
选中 JS 进行过滤,发现列表中出现了好多包,经过分析,我们筛选出下图中加标记的包
这个包返回的是关于价格的信息,可是经过仔细分析发现,这些价格并不是属于当前商品的,而是属于人气配件的
这个包是和价格相关的,我们先看看这个包的请求 URL 吧
https://p.3.cn/prices/mgets?callback=jQuery9945544&type=1&area=27_2376_2381_0&pdtk=&pduid=15809723846531442021077&pdpin=&pin=null&pdbp=0&skuIds=J_100003688077%2CJ_8141909%2CJ_5028795%2CJ_152026%2CJ_61192828749%2CJ_100005600572%2CJ_2533882%2CJ_854803%2CJ_3693877%2CJ_100005483954%2CJ_136360&ext=11100000&source=item-pc
直接用浏览器打开该 URL,可以看到返回的的确是包含价格信息的 JSON 数据
分析该 URL 的参数,可以推测 skuId 应该就是每一个商品独一无二的标志了,那么我们所需要的商品的 skuId 究竟可以在哪里找到呢?
事实上,SKU 是一个在物流、运输等产业中常用的缩写,其全称是 Stock Keeping Unit(库存量单位)即库存进出计量的基本单元,现在已经被引申为产品统一编号的简称,每种产品均对应有唯一的 SKU |
回顾我们刚开始进入的商品首页,
https://item.jd.com/100003688077.html
这其中不是就隐藏着当前商品的唯一号码标识(100003688077)了吗?不妨一试!
果然,访问商品价格的完整 URL 我们就可以得到了,即https://p.3.cn/prices/mgets?skuIds=100003688077
通过直接访问该网址我们就可以得到当前商品的价格信息
事实上,我们还可以对该 URL 进行适当的泛化以适应京东所有商品的价格爬取
很简单,只需要将 skuIds 作为参数独立分离出来即可,https://p.3.cn/prices/mgets?skuIds={ID}
通过泛化后的 URL ,理论上只要能得到商品的 skuId,我们就可以访问对应商品的价格
网络爬虫系列(一):chrome抓包分析相关推荐
- python 爬虫 包_python爬虫学习之路-抓包分析
利用浏览器抓包,是爬虫中的很实用的技能.在爬虫编程之前,我们要对抓取的目标页面有所了解,比如浏览器的这个请求这个页面中间都经历了什么,数据是怎么发送和返回的. 抓包的作用 我把抓包分析的作用简单列一下 ...
- Python3网络爬虫开发实战,抓包工具 Charles 的使用
11.1 Charles 的使用 Charles 是一个网络抓包工具,我们可以用它来做 App 的抓包分析,得到 App 运行过程中发生的所有网络请求和响应内容,这就和 Web 端浏览器的开发者工具 ...
- Python网络爬虫实战之Fiddler抓包今日头条app!附代码
一.Fiddler介绍 1.Fiddler简介 Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的"进出"F ...
- 网络中路由器问题和抓包分析均衡负载实验
路由器 一. 路由协议 常见路由协议有:RIPv2,direct,static,OSPFv2,IS-IS,EIFGRP (Ciso私有)和EGP:外部路由协议.IGP:内部路由协议 二. 路由选谁问题 ...
- 网络爬虫系列之网页抓取
(你的世界是个什么样的世界?你说,我们倾听!) ----------------- 网页抓取 我们在抓取网页时需要安装requests包,具体安装过程如下: pip install request ...
- 网络爬虫---抓包分析,用抓包分析爬取腾讯视频某视频所有评论(Fiddler工具包的分享)
抓包分析,用抓包分析爬取腾讯视频某视频所有评论(Fiddler工具包的分享) 文章目录 抓包分析,用抓包分析爬取腾讯视频某视频所有评论(Fiddler工具包的分享) 一.抓包分析 1.下载工具并安装 ...
- 数据分析与爬虫实战视频——学习笔记(二)(千图网图片爬虫、fiddler抓包分析、腾讯视频评论爬虫、多线程爬虫(糗百))
网址:[数据挖掘]2019年最新python3 数据分析与数据爬虫实战 https://www.bilibili.com/video/av22571713/?p=26 第三周第二节课 1抓包分析实战 ...
- Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark
Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark Wireshark(前称Ethereal)是一个网络包分析工具.该工具主要是用来捕获网络包,并显示包的详细情况.本节将分别介绍 ...
- Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述
Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...
最新文章
- i++ 和++i的区别
- input添加float样式后位置偏移的解决
- js中继承的几种用法总结(apply,call,prototype)
- 【简讯】微软拟发布开源VB6
- android自定义控件是一个 内部类 如何在xml中引用,android 自定义view属性
- python (六)函数
- Struts2中jsp前台传值到action后台的三种方式以及valueStack的使用
- python面试题之如何解决验证码的问题,用什么模块,听过哪些人工打码平台?
- SVN环境搭建详解(来源网络)
- 最常见到的runtime exception 异常
- 2091操作系统引论
- 哥,我跟你讲,我想创业
- 数值线性代数徐树方pdf_MIT线性代数4-8:矩阵分解,向量空间,列空间和零空间,线性方程组求解...
- 【Vue实战】汽车品牌列表表格实现(添加、删除功能)
- 深度linux升级,测试从Deepin Linux 15升级到Deepin Linux v20
- 《老路用得上的商学课》21-25学习笔记
- 第三章:x264视频制作meGUI工具使用
- BOF算法 基于SIFT+KMeans
- java百元买百兔 穷举法_JAVA--算法与数据结构- 逢7过百钱白鸡不死神兔【1/100】...
- 测试REST Web服务
热门文章
- 敏捷开发进度管理之燃尽图
- 局域网限制网速软件_为什么员工反感局域网管理软件
- APB总线总结和VIP使用
- Dell E5400 Windows 2003 安装注意事项
- 软件工程要学计算机网络吗,计算机网络与软件工程专业学习心得.docx
- 【微信机器人】可做自动回复,自动接收转账,群聊机器人。
- 华为2018实习生机试题目
- AT2341 Increasing Numbers
- 暗淡的太阳,Sun公司兴衰史
- 3D Human Body Reconstruction from a Single Image via Volumetric Regression笔记