HTTP和HTTPS以及Fiddler的使用_recv

一、HTTP和HTTPS

HTTP协议(超文本传输协议):是一种发布和接受HTML页面的方法。

HTTPS就是HTTP的安全版,在HTTP下加入SSL层。

SSL(安全套接层)主要用于Web的完全传输协议,在传输层对网络链接进行加密,保障在Internet上数据传输的安全。

    HTTP的端口号为80,HTTPS的端口号为443

HTTP工作原理

网络爬虫抓取过程可以理解为  模拟浏览器操作的过程。

浏览器的主要功能是像服务器发出请求,在浏览器窗口中展示您选择的网络资源,HTTP是一套计算机通过网络进行通信的规则。

二、HTTP的请求与响应

HTTP通信由两部分组成:客户端请求消息服务器响应消息

浏览器发送HTTP请求的过程:

1.当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“Get”和“Post”两种方法。

2.当我们在浏览器输入URL  http://www.baidu.com的时候,浏览器发送一个Request请求去获取http://www.baidu.com的html文件,服务器把Response文件对象发送回给浏览器。

3.浏览器分析Response中的HTML,发现其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。浏览器回自动再次发送Request去获取图片,CSS文件,或者JS文件。

4.当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。

URL:统一资源定位符,是用于完整地描述Internet上网页和其他资源的地址和一种标识方法。

基本格式:scheme://host[:port#]/path/.../[?query-string][#anchor]

      scheme:协议(例如:http,https,ftp)

       host:服务器的IP地址或者域名

       port#:服务器的端口(如果是走协议默认端口,缺省端口80)

       path:访问资源的路径

      query-string:参数,发送给http服务器的数据

     anchor:锚(跳转到网页的指定锚点位置)     

例如:

   frp://192.168.0.116:8080/index

   http://www.baidu.com

   http://item.jd.com/11935238.html#product-detail

三、客户端HTTP请求

URL只是标识资源的位置,而HTTP是用来提交和获取资源。客户端发送一个HTTP请求到服务器的请求消息,包括一下格式:

请求行、请求头部、空行、请求数据

四个部分组成,下图给出了请求报文的一般格式。

一个典型的HTTP请求实例

 

 

 

 

 

 

 

 

 

 

 

 

 

 

### 使用 Fiddler 拦截 WebSocket 数据流 #### 配置环境 为了成功拦截 WebSocket 流量,需先配置好 Fiddler 工具。确保已安装最新版本的 Fiddler 或者跨平台版 Fiddler Everywhere[^4]。 #### 启用解密 HTTPS 流量 如果目标网站通过 HTTPS 发送 WebSocket 请求,则需要启用 HTTPS 解密选项。进入 `Tools` -> `Options` -> `HTTPS` 页面勾选 `Decrypt HTTPS traffic` 并按照提示完成证书信任设置[^3]。 #### 过滤 WebSocket 会话 启动 Fiddler 后,在左侧会话列表中可以看到所有 HTTP(S) 请求响应;对于 WebSocket 握手请求(通常带有 `Upgrade: websocket` 头部),可以通过过滤器来定位特定连接。点击顶部菜单栏中的 `Filters` 图标开启高级筛选模式,输入关键词如 "ws:" 来限定只显示 WebSockets 类型的流量[^1]。 #### 查看与分析 WebSocket 帧 当捕获到 WebSocket 握手成功的会话项时,双击该项打开详情窗口。切换至右侧标签页下的 “WebSocket” 分区即可看到该链接上收发的具体帧内容以及时间戳等信息。这里不仅能看到原始二进制形式的数据还能解析成更易读的文字描述[^2]。 ```python # Python 示例代码展示如何模拟发送自定义 WS 消息给服务器 (仅作概念说明用途) import websockets async def hello(): uri = 'wss://example.com/socket' async with websockets.connect(uri) as ws: await ws.send("Hello Server!") resp = await ws.recv() print(f"< {resp}") if __name__ == "__main__": import asyncio asyncio.get_event_loop().run_until_complete(hello()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值