2.7 网络抓包

1.简介
抓包是指对网络传输中发送与接收的数据包进行拦截、重发、编辑和转存的操作。
在开发网络爬虫时,给定URL,开发者必须清楚客户端是如何向服务器发送请求的,以及客户端发出请求后服务器返回的数据是什么。只有了解这些内容,开发者才能在程序中拼接URL,针对服务返回的数据类型制定具体的解析策略。因此,网络抓包是实现网络爬虫必不可少的技能之一,也是网络爬虫开发的起点。
例如,采集药监局国产药品数据时,在浏览器中输入国产药品列表页URL,如图1所示。点击药品信息,浏览器显示出药品数据详情,如图2所示,但是URL却没有发生变化。原因是单击药品信息时,客户端向服务器发送了其它请求,而该请求的URL并不是浏览器上显示的,而是下面这个地址国产药品详情URL。
在这里插入图片描述
在这里插入图片描述
基于网络抓包很容易捕获浏览器每一步操作对应的请求信息以及响应信息。

2.使用情境
对于很多初学者而言,由于不了解网络抓包,而直接去请求某个URL,可能导致无法获取自己想要的数据。在此,对网络抓包的使用情境做如下说明。

  • 直接请求URL能够获得数据时,可以不用进行网络抓包分析。但当使用程序直接请求URL无法找到网页中的数据时(多为JSON),则需要采取网络抓包措施,获取数据对应的真实请求URL。
  • 执行表单请求时,需要采取网络抓包措施,如需模拟登录网站才能获得的数据。基于网络抓包,可以捕获表单请求提交的详细参数(如用户名、密码等)。
  • 将捕获的请求信息添加到程序中,如利用网络抓包获取一些浏览器请求网页的头信息和请求方法等。

3.谷歌浏览器抓包
网络抓包分析的主要内容是报文信息,即HTTP请求方法、信息头、响应状态、响应状态码、响应正文内容和表单的提交参数等。多数浏览器,都具有HTTP抓包的功能,下面使用谷歌浏览器进行操作,来分析阿里云网站的登录页面,如下图所示。
在这里插入图片描述
步骤1:在谷歌浏览器中,右击“检查”按钮,在弹出框中单击“Network”,勾选“Preserve log”,如下图所示。刷新页面,并在账户登录页面输入用户名和密码。
在这里插入图片描述
步骤2:单击“登录”按钮,执行网络抓包。在“Name”栏中找到与登录提交参数有关的请求。如下图所示,网络抓包得到的登录过程中,表单提交的内容,同时,在“General”栏中可以看到具体的请求URL。
在这里插入图片描述
在网络爬虫模拟登录过程中,需要提交这些参数。所以,首先需要获取登录页面对应的具体参数值。要是密码采用了加密,则需要使用相应的加密算法获得加密后的密码。其次,拼接登录的URL。最后,提交所有参数以及参数值便可以达到模拟登录网站的目的。

热门文章

暂无图片
编程学习 ·

Nginx学习笔记

1.Nginx简介 Nginx 是一个高性能的HTTP和反向代理服务器,特点是占内存少,并发能力强。Nginx转为性能优化而开发,性能是器最重要的考量,实现上非常注重效率,能经受住高负载的考验,有报告表明能支持的高达50000个并发连接数。 百度,腾讯,网易,淘宝等都在使用Nginx. 2.反…
暂无图片
编程学习 ·

machine learning基础知识(Leetcode)

机器学习 machine learning是机器通过已知的内容,类似于人类一样进行学习,并对同类型数据进行判断的过程。 例如训练图片模型就是将每个像素点转为0到255之间的值,利用机器发现不同种类的图片之间存在的映射。 有监督与无监督模型监督学习是F(x)= sum 并且sum已知,可以通…
暂无图片
编程学习 ·

怎么才能最短时、高效、踏实的学习 Python?

作者:飞绝眷岭 链接:https://www.zhihu.com/question/28530832/answer/58656332 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。Dataquest 这个网站上提供了一系列和数据分析相关的python教程,从python基本语法到data analysis的基本函数…
暂无图片
编程学习 ·

jetson测试多个CSI摄像头(python版)

首先,CSI摄像头和USB摄像头的调用方式是不一样的。 遇到过的错误 linano@jetson-nano$:python3 mpy-Copyl.py [ WARN:0 ] qlobal /home/nvidia/host/build opencv/nv opencv/modules/videoio/src/cap qstreamer. Cpp (1757) handleMessage OpenCV | GStreamer warninq: Embedd…
暂无图片
编程学习 ·

spring+mybatis日志

spring4默认日志是log4j, spring5默认日志是JUL spring4下使用JCL时,如果有log4j的jar,用的具体实现类是log4j,否则用的具体实现类是JUL spring4下使用JCL时,用的具体实现类是JUL1、spring4下日志加载顺序//循环for(int i=0; i<classesToDiscover.length && resu…
暂无图片
编程学习 ·

抖音上卖什么最热销?抖音上最热销的产品是什么?

抖音带货卖什么类型产品热门,抖音带货做哪个领域好自去年六月第一批100个内测账号入驻以来,抖音购物车至今已运营一年有余。随着这一年来功能打磨、生态打通等不断完善,抖音购物车已成为KOL带货变现的绝佳途径之一。第一种,在抖音里卖减肥产品。现在的人生活条件都比较好,…
暂无图片
编程学习 ·

JS笔记(一)

1.JS基本类型:ECMAScript 中有5种简单数据类型(也称为基本数据类型):Undefined,Null,Boolean,Number和String。一种复杂数据类型:object# typeOf null 的结果为Objectvar n = null var flag = true var s = str var num = 11 var un = undefinedconsole.log(typeof(n)); …
暂无图片
编程学习 ·

STM32CubeMX5.6.1生成的代码无启动文件

丢失启动文件 使用这个版本的CubeMX,生成的代码里面没有对应的启动文件。编译报错 展开图片,在Drivers/CMSIS文件夹下面,没有启动文件。编译不通过,报错No section matches selector - no section to be FIRST/LAST。//------------------------------------------ 解决方法…
暂无图片
编程学习 ·

代码优化

也许有人会感觉CR没有什么卵用,只要我代码实现了功能,我完成了开发任务,我就OK了,为啥还要CR??但是CR真的是有必要的,你不仅可以发现自己代码中的不足之处,待优化点,简洁明了的代码易读别人接手也会很快。1. 比如在vue项目中只有某一个组件用某一个特别长的常量对象,…
暂无图片
编程学习 ·

css border-radius的用法及自适应的椭圆

我们知道border-radius允许您为元素添加圆角边框! 而border-radius 属性是一个简写属性,用于设置四个 border-*-radius 属性。 如果省略 bottom-left,则与 top-right 相同。如果省略 bottom-right,则与 top-left 相同。如果省略 top-right,则与 top-left 相同。 先看个例子…
暂无图片
编程学习 ·

原创 Spring in Action 5th edition Chapter 1 & 2

Chapter I & IIHow to write a controller How to write a template How to add attributes to Model object How to perform validation How to write a “controller” which does simple thingsHow to write a controller @Controller @RequestMapping("/path"…
暂无图片
编程学习 ·

Hadoop(七)——中下下

shuffle MapReduce的shuffle分为map阶段的shuffle和reduce阶段的shuffle,下面就分别来做介绍。 map阶段的shuffle: 之前我们学的是map阶段并不是直接把数据给reduce,而是会把数据分好,该分区的分区,该封装的封装,该合并的合并再给到reduce,下面就来详细介绍这个过程。1.…
暂无图片
编程学习 ·

Linux下redis的安装及用法

Linux下redis的安装及用法 下面介绍在Linux环境下,Redis的安装与部署 1、在安装redis之前先安装C++编译环境,查看目前服务器上gcc的版本:gcc -v, 如果Linux系统没有安装gcc编译器,会提示“Command not found”;如果提示命令找不到,则表明没有安装; 或者更新版本,不然后…
暂无图片
编程学习 ·

Yarn工作原理自我总结

如图所示 1.由Client(客户端)提交一个作业请求给ResourceManager(资源管理器) 2.ResourceManager生成一个ApplicationMaster(程序管理员),并根据Node Status(状态)在空闲的NodeManager节点上运行ApplicationMaster 3.ApplicationMaster向ResourceManager注册其信息,并发送资源…
暂无图片
编程学习 ·

网上书城前端界面设计

网上书城界面设计前言界面设计首页登录注册书籍搜索购物车代码实现总结 前言 接着我的上一篇博客来,今天为大家分享的内容是网上书城项目的界面设计以及代码分析 网上书城项目需求分析、功能划分、数据库表设计、工具类介绍 界面设计 首页首页的话,主要涉及到了BootStrap的相…
暂无图片
编程学习 ·

专业外语学科复习总结

文章目录英译汉选择题Unit 1-ExcerciseUnit 2-ExerciseUnit 3-ExerciseUnit 4- ExerciseUnit 5- ExerciseUnit 6- ExerciseUnit 7- Exercise阅读题作文阶段性巩固练习(unit1~3)阶段性巩固练习(unit4~5)阶段性巩固练习(unit6~7) 英译汉 OS also manage files on computer hard d…
暂无图片
编程学习 ·

布局优化 include viewstub merge 及源码解析

我只是一个无情的搬运工 布局是我们再开发应用时必不可少的工作,通常情况下,布局并不会成为工作中的难点。但是,当你的应用变得越来越富咱,页面越来越多时,布局上的优化工作就成了性能优化的第一步。因为布局上的优化并不像其他优化方式那么复杂,通过Android Sdk提供的Hi…