使用FiddlerCore来截取替换Http请求中的网页内容
做过测试的应该都知道Fiddler,它可以很方便截取Internet上的网页替换成本地的,或者修改其中的一部分内容后呈现。简单地说就是可能监测所有HTTP连接,设置断点,胡乱修改。是测试调试的一件利器。
使用Fiddler的开放组件,我们可以将其集成到自己的程序中,如生成flash/silverlight所需要的crossdomain.xml,clientaccesspolicy.xml安全文件等:
Fiddler的API: http://www.fiddler2.com/fiddler/dev/ScriptSamples.asp
下面是一个小例子:自动生成所有的silverlight安全策略文件:
using System;
using Fiddler;
namespace AccessPolicyTool
{
class Program
{
const string PolicyXml = @"<?xml version=""1.0"" encoding=""utf-8""?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers=""*"">
<domain uri=""http://*""/>
</allow-from>
<grant-to>
<resource path=""/"" include-subpaths=""true""/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>";
//find and replace the client access policy file.
static void Main(string[] args)
{
//List<Fiddler.Session> oAllSessions = new List<Fiddler.Session>();
Fiddler.FiddlerApplication.BeforeRequest += new SessionStateHandler(FiddlerApplication_BeforeRequest);
Fiddler.FiddlerApplication.BeforeResponse += new Fiddler.SessionStateHandler(FiddlerApplication_BeforeResponse);
Fiddler.FiddlerApplication.Startup(8877, FiddlerCoreStartupFlags.Default);
Console.ReadKey();
Fiddler.FiddlerApplication.Shutdown();
}
static void FiddlerApplication_BeforeRequest(Session oSession)
{
Console.WriteLine("FiddlerApplication_BeforeRequest");
if (oSession.fullUrl.IndexOf("clientaccesspolicy.xml") > 0)
{
oSession.bBufferResponse = true;
}
}
//find and replace the client access policy file.
static void FiddlerApplication_BeforeResponse(Fiddler.Session oSession)
{
if (oSession.fullUrl.IndexOf("clientaccesspolicy.xml") > 0)
{
Console.WriteLine(oSession.fullUrl);
oSession.utilDecodeResponse();
oSession.utilSetResponseBody(PolicyXml);
oSession.oResponse.headers.HTTPResponseCode = 200;
oSession.oResponse.headers.HTTPResponseStatus = "200 OK";
oSession.oResponse.headers["Content-Type"] = "text/xml";
oSession.oResponse.headers.Remove("WWW-Authenticate");
}
}
}
}
FiddlerCore 修改HTTP返回结果
发了封邮件给官网,问题解决了。
在BeforeRequest事件中设置Session.bBufferResponse = true 就可以了。
使用FiddlerCore来截取替换Http请求中的网页内容相关推荐
- nginx 替换返回请求中的字符
nginx学习sub_filter模块 location / {root /opt/app/code/;random_index on;index index.html index.htm;sub_f ...
- 正则匹配不包含某字符串_如何替换JS字符串中匹配到多处中某一指定节点?
来源 | https://www.cnblogs.com/class1/p/14273231.html 问题先行,要求搜索关键字,匹配到四处,那我鼠标放在第二处,我想把它变个颜色,该怎么实现呢?截图如 ...
- Logback 快速定位用户在一次请求中的所有日志
问题描述 最近经常做线上问题的排查,而排查问题用得最多的方式是查看日志,但是在现有系统中,各种无关日志穿行其中,导致我没办法快速的找出用户在一次请求中所有的日志. 问题分析 我们没办法快速定位用户在一 ...
- linux 变量替换字符串,shell中常用的变量处理、字符串操作(之一)
在shell中,当我们已经获取到某个变量的变量值的时候,可能还需要对变量值进行一定的处理,才能到我们最终想要的结果,今天我们就来聊聊shell中常见的变量处理方法,我们通常会对变量进行如下处理. 一. ...
- 字符串 匹配首尾字符串 java_java Matcher匹配头尾截取替换字符串的案例
在java 编程中,我们常常有这样的需求:需要将一段字符串内的特定字符串,按照一定规则查找出来或替换,比如匹配文本开头规则和结束规则. 以下就是Matcher的使用: import java.util ...
- 有属性的自定义注解,如何获取到post请求中RequestBody中对象的一个属性值?
1,写两个自定义注解,一个作用于方法的,一个作用于字段的 作用于方法的自定义注解代码: package com.youku.nintendo.annotation;import enums.Permi ...
- 接口请求中post与put的区别
RESTful API RESTful API是一种Web API的设计风格和开发方式,它遵循一组约束和属性,其中最重要的是客户端和服务器之间的无状态通信.在RESTful API中,资源通过URI进 ...
- 【2012百度之星/资格赛】H:用户请求中的品牌 [后缀数组]
时间限制: 1000ms 内存限制: 65536kB 描述 馅饼同学是一个在百度工作,做用户请求(query)分析的同学,他在用户请求中经常会遇到一些很奇葩的词汇.在比方说"johnsonj ...
- postman简单教程,如何在请求中引用上次请求返回的值
做接口测试,一定会遇到这种情况,需要拿上次请求的值在本次请求中使用,比如,我们去测试一个东西,要去登录才能做其他的操作,需要拿到登录返回数据中的某些字段,比如,token啊等... 如果发一次请求,就 ...
最新文章
- Java学习--多态
- 部署RocketMQ的管理工具
- njx如何实现负载均衡_使用Nginx实现负载均衡
- 怎么去掉网页上复制到word的文章中各种符号例如向下箭头(↓)?
- 剑指Offer之两个链表的第一个公共节点
- centos7远程访问mysql数据库_CentOS7下安装mysql最快捷方式及mysql远程访问连接实现详解...
- 平均值(Mean)、方差(Variance)、标准差(Standard Deviation)
- spring3: 依赖和依赖注入-xml配置-DI的配置
- c#进度条刻度_自定义滑动刻度进度条
- GPM、FY-4A数据下载
- ps里面怎么插入流程图_教你如何正确画工艺流程图
- 程序员的表白文,加点不一样的料!
- win10清理_卸载全家桶之后:用win10自带杀软,怎么清理电脑垃圾?
- (已解决)ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.
- js对数组的删除操作
- 一分钟自我介绍怎么说才精彩
- RabbitMQ在特来电的深度应用
- C#高效编程 改进C#代码的50个行之有效的办法(第2版)
- Gibbs抽样方法详解
- 车易加加油抵扣卡_油价又要涨啦,预测上调红线将被冲破