如何在 Fiddler 中修改请求?

60

我正在寻找一个简单的方法来拦截Web请求并使用Fiddler修改请求内容(主要是POST)。

这样可以测试服务器端验证。

我必须使用Fiddler,但是我还没有找到一个好的简单方法来实现。

已经有几种记录在案的编写脚本来拦截流量和更改头部的方法,但我希望不使用编写脚本的方式实现 - 这个工具需要由测试人员使用,让不同的测试人员一直编写/修改脚本可能会很烦人。

示例:

带有2个参数的简单POST:

field1=foo, 
field2=bar

我希望拦截请求,将 field2 的值修改为类似于bañ的内容(请注意ñ,在我的情况下是无效的,这就是我想要测试的内容)。

2个回答

97

好的,我从以下Youtube视频中整理并拼凑出答案:

使用Fiddler篡改客户端请求和服务器响应


  1. 启动Fiddler(我正在使用Fiddler 4)

  2. 您会注意到它会拦截所有浏览器和其他应用程序的流量

  3. 设置过滤器 - 这将使您只查看您感兴趣的数据

    1. 在右侧,单击过滤器选项卡
    2. 选择“使用过滤器”
    3. 在主机上,使用“仅显示以下主机”
    4. 在下面的文本框中,输入您要测试的主机。在我们的测试环境中,将其设置为:testing.internalsite.com;
    5. 在称为“断点”的部分中,选中“在POST请求时中断”
  4. 拦截请求

    1. 在浏览器中,导航到您要测试的页面。在我们的情况下,这是欢迎页面,我们将在其中测试服务器端验证:https://testing.internalsite.com/yourapp/welcome.do
    2. 通过单击工具栏中的“X”并选择“全部删除”来清除所有现有的登录请求。
    3. 在浏览器中,将数据放入您要测试的表单中,然后点击提交。这是有效数据(通过客户端验证),您将使用Fiddler更改该数据。
    4. 在Fiddler中,您会看到带有红色图标的请求。单击请求以在右侧加载详细信息。
    5. 在检查者选项卡上,接着是WebForms选项卡,您可以修改已提交的表单的参数。根据测试需要更改数据。
    6. 点击“运行至完成”按钮
  5. 验证您的响应是否正确 - 如果正在测试服务器端验证,则通常会显示某种错误消息


1
有没有办法阻止这种篡改? - Sujit.Warrier
这只是一种重新配置客户端请求的方法 - 任何客户端验证都应该有一个等效的服务器端验证,因为理论上客户端始终可以控制机器发送什么。 - Coruscate5
8
@Sujit.Warrier 不行。你永远无法控制客户端发送什么,这意味着你永远不能信任客户端数据。你必须在服务器端进行验证/清洗等操作。 - Matthew

9

我使用的是 Fiddler 4.6.3。如果您正在提交 Web 表单,可以尝试这个工具。

在提交表单时注意 Post 请求。让请求保留在 Fiddler 中。接下来修改请求内容:

1 - 右键点击请求 > 选择 “解锁以编辑”。

2 - 切换到 Inspector 标签页 > 在 Body 区域中修改用户名、密码等表单字段。

3 - 右键点击请求 > 选择 “重放” > “重新发出请求”。

完成!这种方法的唯一问题是会修改旧的请求。在 Charles proxy 中,只需 2-3 次点击即可完成操作,比 Fiddler 的流程简便得多。此外,您无需混淆旧请求。


Fiddler中的“许多点击”?它们在哪里?你的答案包含2个右键单击和可能有2个左键单击。如果“Charles代理”(从未听说过)具有较少的点击,则原因只能是它具有较少的功能(或具有“数千”按钮的真正超载GUI)。 - The incredible Jan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接