抓包必备技能
一、什么是抓包?
不同主机之间的数据通信都是通过网络来进行传输,对那些在网络上传输的数据(发送、请求的数据)进行截获、编辑、转存等操作叫做抓包。抓包可以是抓取电脑端请求的数据,还可以抓取移动端(手机APP)的数据包。
二、抓包的技术原理是什么?
一般情况下,数据按照各种网络协议按照一定的格式在网络上进行传输,网络上传输的数据是以帧为单位,在对需要发送的数据进行包装的时候,会把数据的接收方、发送的的地址(MAC地址、IP地址等)一起进行包装并进行发送。
根据发送方和接收方的地址,会有一条数据包的传输路径,在这条路径上,发送的数据包,会经过网络上很多台主机,标准的TCP/IP协议是这样处理的:当有数据经过主机时,主机会通过存放在数据包里面的地址来进行判断,这个数据包是否是发送自己的,如果不是发给自己的,主机就不会对它进行解析,简单的进行丢弃(转发)。如果是发送给自己的,那么主机就会对其进行解析和存储。
三、 爬虫工作流
1.确定URL,向服务器发起请求并获得响应:requests,urllib,aiohttp,scrapy框架
2.在响应中提取目标数据,即数据解析:xpath,bs4,正则,PyQuery
3.数据持久化:文件,关系型数据库,非关系型数据库
四、 抓包技能
1.打开浏览器
2.打开浏览器检查
#(Network :抓包的主要位置,里面汇聚了所有的数据包)
#(Elements是网页中的结构体,它里面包含的东西,是所有数据包集合的结果,注意,你访问的某个URL,一般都不会是elements里面的东西)
#(Headers:相应数据头部信息; Preciew:预览按钮; Responsse:相应数据的内容)
#(General:确定URL)
五、 简单案例
import re
import requests
import pymysql
# 1.确定URL,发起请求,获取相应数据
res=requests.get(url='https://www.guidaye.com/cp/')
res.encoding='gbk'
# 2.数据解析
titles=re.findall(r'<h3><a href="/cp/\d+.html" target="_blank" title="(.*?)">.*?</a></h3>', res.text)
print(titles)
# 3.数据持久化
con=pymysql.connect(host='localhost',user='root',password='mysql',port=3306,charset='utf8',database='first_sp')
cursor=con.cursor()
for i in titles:
sql="insert into gs values ('%s')"%i
try:
cursor.execute(sql)
con.commit()
print('存储成功')
except:
con.rollback()
print('失败')