首页 > 其他分享 >网络基础及抓包方法汇总

网络基础及抓包方法汇总

时间:2023-03-08 14:36:11浏览次数:52  
标签:__ http 请求 url tcpdump 汇总 网络 curl 方法

网络基础

常见网络模型与常见协议

常见网络协议

网络架构图

网络架构

互联网通讯协议架构

image-20211130134619935

TCP / UDP

  • TCP:面向连接、错误重传、拥塞控制、适用于可靠性高的场景
  • UDP:不需要提前建立连接,实现简单,适用于实时性高的场景

Restful 软件架构风格

借助于 http 协议的基本请求方法代表资源的状态切换

  • get:获取资源
  • post:新增或更新资源
  • put:更新资源
  • delete:删除资源

RPC 协议

Remote Procedure Call,以本地调用的方式实现远程执行

  • Dubbo(阿里)
    • java 上高性能 RPC 协议,Apache 开源项目,由阿里捐赠
    • 底层应用层协议支持 dubbo 缺省 tcp 协议、http、hessian、thrift、grpc 等
    • Dubbo 接口本质上也是属于 TCP/IP 技术栈
  • gRPC(Google)
    • 高性能通用 RPC 框架,基于 Protocol Buffers(Google)
    • PB 是一个语言中立、平台中立的数据序列化框架,谷歌开源项目
  • Thrift(Facebook)
    • 与 gRPC 类似的多语言 RPC 框架,Apache 开源项目

协议分析工具

  • 网络监听(偏向于网络层)
    • TcpDump(命令行) + WireShark
  • 代理 Proxy(代理应用层协议分析)
    • Charles(全平台)、安全测试 burpsuite(全平台 java)
    • mitmproxy(自动化测试 python)
    • fiddelr(windows)、AnyProxy(全平台)
  • 协议客户端工具(主动发起请求)
    • curl(命令行)
    • postman(Chrome 插件&客户端 全平台)

网络监听

使用场景:用 tcpdump 抓包保存以后,使用 wireshark 界面工具分析。

tcpdump

$ sudo tcpdump -Al host www.baidu.com
  • 参数
    • -x 十六进制展示
    • -w file 保存文件
  • 表达式
    • ip tcp 协议
    • host 主机名
    • port 80 端口号
    • src(来源)& dst(目的地) 过滤
    • and or () 逻辑表达式

wireshark

官网

参考资料

三次握手

示例:请求百度后, TCP 连接建立过程

$ sudo tcpdump host www.baidu.com -w /tmp/tcpdump.log
# 需要输入电脑密码,开启新窗口发送请求
$ curl http://www.baidu.com
# 停止 tcpdump
# 启动 wireshark,点击文件夹图标,打开 tcpdump.log

三次握手与四次挥手

image-20211130144521195

使用 chrome 开发者工具分析网络请求

  • Elements:抓取页面元素,做自动化测试经常使用
  • Console:控制台,可以在页面上与 JavaScript 交互
  • Sources:源代码面板,可以设置断点调试 JavaScript
  • Network:网络面板,用于 web 抓包,记录了每条网络操作的相关信息
  • Performance:录制页面性能数据
  • Memory:排查代码内存分配问题
  • Application:应用面板,使用资源面板检查加载的所有资源,包括 IndexedDB 与 Web SQL 数据库,本地和会话存储,cookie,应用程序缓存,图像,字体和样式表
  • Security:安全面板,用于调试混合内容、证书等问题
  • Lighthouse:用于提高网页质量,能够针对性能、可访问性、渐进式 Web 应用等进行审核

下图为 network 面板的功能注解。

image-20211130154021687

curl 常见用法

# get
$ curl $url | jq
# post
$ curl -d '$body' $url
# proxy 代理网络请求
$ curl -x 'http://localhost:8080' $url
  • -H:消息头设置
  • -u:username:password 用户认证
  • -d:要发送的 post 数据,@file 表示来自于文件
  • --data-urlencode 'page_size=50':对内容进行编码
  • -G:把 data 数据当成 get 请求的参数发送,常与 --data-urlencode 结合使用
  • -o:写文件,用于下载
  • -x:代理 http、socks5
  • -v:verbose 打印更详细的日志
  • -s:关闭一些提示输出

通过 jq 可以格式化 json 的输出内容,更加优雅。

Charles

  • 过滤请求:Proxy - Recording Settings
  • 弱网设置:Proxy - Throttle Settings
  • 断点请求:Proxy - Breakpoint Settings
  • 映射请求:Tools - Map Remote&Local
  • 重写请求:Tools - Rewrite

mitmproxy

演示:当请求百度域名的时候,会自动打印信息。

import mitmproxy.http
from mitmproxy.tools.main import mitmdump

class Events:
    def request(self, flow: mitmproxy.http.HTTPFlow):
        """
            The full HTTP request has been read.
        """
        flow_url = flow.request.url
        if "baidu" in flow_url:
            # 还可以做其他操作,比如修改搜索词 等
            print(f"{'-'*10} 哈哈哈 {'-'*10}")

addons = [
    Events()
]


if __name__ == '__main__':
# 使用 debug 模式启动 mitmdump
# 端口需要使用字符串
mitmdump(['-p', '8080', '-s', __file__])

不仅可以代理请求,最重要的是可以自定义脚本进行二次开发,实现很多代理工具做不到的事情。

标签:__,http,请求,url,tcpdump,汇总,网络,curl,方法
From: https://www.cnblogs.com/abeelan/p/17191881.html

相关文章

  • [java-基础]-Java构造方法的执行顺序
    (一)Java构造方法的执行顺序1.如果类里边没有定义任何构造方法,则系统将添加一个默认的无参构造方法。ClassThisClass{}默认隐式添加无参的构造方法,相当于ClassThi......
  • 多线程的interrut()方法
    java中的interrut方法,主要作用为中断指定线程,该中断并非是直接打断,而是将线程的中断标志设置为1,当线程执行到sleep、wait方法陷入的阻塞状态,则进行中断,抛出interrutExcepti......
  • [java高级]-详解Java8 Collect收集Stream的方法
    1、Collection,Collections,collect,Collector,CollectosCollection是Java集合的祖先接口。Collections是java.util包下的一个工具类,内涵各种处理集合的静态方法。j......
  • CAD指令框找不到了怎么调出来?CAD指令框调出方法
    CAD制图过程中,为了提高设计师的绘图效率,经常会用到各种CAD命令快捷键,可是CAD指令框突然不见了,这就让人很头疼了。CAD指令框找不到了怎么调出来呢?本节内容小编以浩辰CAD软件......
  • 问题汇总
    1.异种多数据源时你们怎么解决的?如何切换不同数据源引入了com.baomidou--->'dynamic-datasource-spring-boot-starter'驱动在yml文件中进行了不同种数据源的配置指定前......
  • 大小端(网络字节序)等概念
    大端存储模式:是指数据的低字节保存在内存的高地址位,而数据的高字节保存在内存的低地址位。小端存储模式:是指数据的低字节保存在内存的低地址,而数据的高字节保存在内存的高......
  • 让 OpenAI ChatGPT 直接发送、预览图片的方法
    让OpenAIChatGPT直接发送、预览图片的方法引用地址:https://baiyunju.cc/11056前面介绍了中国境内怎么接收外国短信验证码注册和使用ChatGPT,请参考《人工智能OpenAI......
  • 汇总表
    这个博客也是需要汇总表的!总结区2023-02-13MessageRoute2023-02-17棋盘2023-03-01Product2023-03-01CountInterval2023-03-01Σ[k=0..10^100]floor(X/10^k......
  • 计算机网络之网络层
    网络层网络层提供了虚电路服务和数据报服务。两者的区别:1.虚电路服务需要先建立连接,但数据报服务不用2.虚电路服务会保证通讯的可靠性,但是数据报服务不会3.虚电路服务同......
  • Vue 删除取消时报Uncaught (in promise) cancel错误解决方法
    Vue删除取消时报Uncaught(inpromise)cancel错误,如下图:   原因:this.$confirm方法内置promise方法,所以.catch()不能省略(因为取消操作时,无法捕获),虽然不影响操作,但......