我想做如下。最好的方法是什么?一般的答案也可以。
我想在客户端拦截一个 HTTP 请求以更改一些 html 内容。例如,我访问 CNN.com,而不是显示“两只洛杉矶狗结婚”的文章,而应该说“可笑的标题被屏蔽”。
即使是安全的证书也不会受到干扰,这应该很顺利。
我正在使用 C#。
谢谢!
更新:谢谢大家的回答!
我想做如下。最好的方法是什么?一般的答案也可以。
我想在客户端拦截一个 HTTP 请求以更改一些 html 内容。例如,我访问 CNN.com,而不是显示“两只洛杉矶狗结婚”的文章,而应该说“可笑的标题被屏蔽”。
即使是安全的证书也不会受到干扰,这应该很顺利。
我正在使用 C#。
谢谢!
更新:谢谢大家的回答!
您可以通过Privoxy的过滤器文件执行此操作。他们有趣的过滤器是您想要做的那种替换的一个很好的例子。
要将 cnn.com 上的“Two LA Dogs Marry”替换为“Ridiculous Title Blocked”,您的操作文件将如下所示:
{ +filter{ridiculous-title-censor} } .cnn.com
你的过滤器文件看起来像
# FILTER: ridiculous-title-censor Remove ridiculous titles # This keeps CNN from getting too ridiculous # s/Two LA Dogs Marry/Ridiculous Title Blocked/ig
本地 HTTP 代理是可能的,也是最通用的方法。
即您可以使用Fiddler来查看它是否适合您。除了定期监视流量外,我还支持修改请求/响应。
如果您使用 Firefox,另一种选择是使用Greasemonkey脚本。这是一个更改 cnn.com 主标题的示例脚本
如果您不熟悉制作 Greasemoney 脚本所需的 Javascript 编码,您可以使用Platypus 插件就地编辑页面并自动生成脚本文件。
您可以使用 HTTPListener 设置代理。但我认为如果你想把它做好,你需要一个更底层的程序。
我将从一个简单的代理开始,它只转发所有请求并返回所有响应。一旦到位,您就可以开始检查响应。
这是一个很好的起点。
这种方法是做您想要实现的目标的效率最低的方法。
如果这是客户端应用程序,客户端可能会禁用它,从而使其无用。它也很难维护,需要更复杂的编程来确保它与 SSL 一起工作。
我相信您要做的是完全重新发明轮子。
您提供赏金的事实引出了一个问题,即您确实需要在 C# 和客户端中执行此操作,但是“审查坏事”意味着您需要禁止内容,并且任何客户端方法最终都会赋予客户端权力以消除此限制。
就个人而言,我在Squid及其内容适应功能方面取得了巨大成功。
这意味着,客户端需要有一个受控的 Internet 源。这意味着,如果它们都在 LAN 中并共享一个公共 Internet 网关,那么如果您有备用服务器作为代理,这很容易实现。
我建议你买一个小的 linux 盒子,里面可以有一个简单的 Ubuntu 服务器版,然后添加 Squid。网络上到处都是教程,但即使没有教程,实现的水平也变得很容易。
我可能已经完全跑题了,但我希望我能提供帮助。
你可以来中国^_^这样的审查无处不在,你不必自己实施。
好吧,这是个玩笑,答案是您可以为此类任务实现浏览器插件。或者您可能需要在路由器上实现一个路由过滤器(类似 GFW)。
取自这里。
它可以通过Windows上的分层服务提供程序来完成。
来自维基百科:
"A Layered Service Provider (LSP) is a feature of the Microsoft Windows Winsock 2 Service Provider Interface (SPI). A Layered Service Provider is a DLL that uses Winsock APIs to insert itself into the TCP/IP stack. Once in the stack, a Layered Service Provider can intercept and modify inbound and outbound Internet traffic. It allows processing all the TCP/IP traffic taking place between the Internet and the applications that are accessing the Internet (such as a web browser, the email client, etc). "
例如 AdMuncher 正在拦截和插入 http 代码以避免广告。另一个建议是找到一个开源的广告拦截程序,看看他们是如何实现的。
你是说你想为你自己的网站截取这个吗?
在任何情况下,它都需要在 javascript 或 jQuery 中完成,因为 C# 不是客户端语言。
或者,你可以编写一个工具栏,或者一个简单的 chrome 插件,这真的很简单,但它不是 C#
您可以搜索库以通过代理监控浏览,如下所示:
http://httpproxynet.codeplex.com/
java在这个项目中使用的相同概念:http: //www.charlesproxy.com/
听起来很有趣,祝你好运:)
很久以前,我使用Plugable Mime Filters为 IE 实现了这个功能,所以在我用 c# 在stackoverflow中搜索它之后,我创建了这篇文章,应该可以帮助你开始使用它。
希望这对你有用。
Asynchronous Pluggable Protocols can be used for this type of thing. Although, as stated here INFO: Implementing HTTP-like Asynchronous Pluggable Protocols: "For various reasons, Microsoft neither supports nor recommends that you replace or wrap the default HTTP protocol."