zoukankan      html  css  js  c++  java
  • Fiddler-工作原理

    浏览器与服务器之间通过建立TCP连接以HTTP协议进行通信,浏览器默认通过系统http代理发送到服务器。 而Fiddler是c#开发(微软出品,主要作者Eric Lawrence)的http代理服务器,fiddler工作于七层中的应用层,能够捕获到通过的http(s)请求。Fiddler充当了一个在客户浏览器与服务器之间的代理服务器角色。它会在本地建立一个代理服务,默认端口为8888,可以访问 http://127.0.0.1:8888 会显示Fiddler的页面。

    Fiddler 作为系统代理,当启用 Fiddler 时,IE 的PROXY 设定会变成 127.0.0.1:8888,因此如果你的浏览器在开启fiddler之后没有设置相应的代理,则fiddler是无法捕获到HTTP请求的。如下是启动Fiddler之后,IE浏览器的代理设置:

    工作原理如下:

    在安装了Fiddler的系统中,启动Fiddler之后会监听8888端口(默认8888,可以修改)。

    我们可以通过监控系统的端口来查看:

    1. 在启动fiddler之前端口8888的状态

    命令:netstat -ano|findstr "8888"

    表示查不到占用状态

    2. 启动fiddler之后:

    在启动fiddelr之后可以发现8888端口被5256线程给监听, LISTENING 表示此线程正在监听

    可以查看到5256线程为fiddler程序

    命令:tasklist |findstr "5256"

    3.然后启动Chrome浏览器,浏览网页就会发现:

    5658进程与fiddler建立了tcp连接(ESTABLISHED 表示此线程的连接情况),发送端为5658进程占用3258端口,接收端为fiddler(5256)占用的8888端口

    命令:netstat -ano|findstr "8888"

    查看5568进程,为chrome程序

    命令:tasklist |findstr "5568"

    同理,打开Firefox浏览器,浏览网页也是如此:

    7836进程与fiddler建立了tcp连接,发送端为7836进程占用3294端口,接收端为fiddler(5256)占用的8888端口

    命令:netstat -ano|findstr "8888"

    查看7836进程,为firefox程序:

    命令:tasklist |findstr "7836"

    ps:要注意的firefox中需要手工将代理设置成fiddler:127.0.0.1:8888,因为Firefox不是使用系统默认的winINET

    所以,fiddler作为一个代理服务器,跟浏览器建立连接之后,浏览器像目标服务器发送的请求都会经过fiddler代理,

    所以fiddler可以捕获到http(s)请求,从而可以解释、分析、甚至重写发出去的http(s)请求。

    简单说就是:

    浏览器 <-> Fiddler <-> 服务器

    在平常的调试中,fiddler常用于:

    1. 解析请求:如:解析http请求状态,请求头,请求正文,返回头,返回正文等

    2. 修改请求,如:设置断点,则可以修改发出去的请求数据,或者修改请求返回的数据

    3.重定向请求,如:替换远程文件,则可以调试线上的js/css代码

    4.构造请求,如:构造请求发送数据,比如可以用于的测试网站安全性

    后面有时间再整理一下fiddler的用法。

    转自:http://lin.xiaogang.me/?p=134

  • 相关阅读:
    webpack基础
    LeetCode232. 用栈实现队列做题笔记
    mysql 时间加减一个月
    leetcode 1381. 设计一个支持增量操作的栈 思路与算法
    LeetCode 141. 环形链表 做题笔记
    leetcode 707. 设计链表 做题笔记
    leetcode 876. 链表的中间结点 做题笔记
    leetcode 143. 重排链表 做题笔记
    leetcode 1365. 有多少小于当前数字的数字 做题笔记
    LeetCode1360. 日期之间隔几天 做题笔记
  • 原文地址:https://www.cnblogs.com/JohnABC/p/4597511.html
Copyright © 2011-2022 走看看