我想做的如下。什么是最好的方式?一般答案也没问题。
我想拦截客户端的HTTP请求来改变一些html内容。例如,我去了CNN.com,而不是一篇显示“两只LA狗结婚”的文章,它应该说“荒谬的标题被封锁”。
即使是安全的证书也不会受到干扰。
我正在使用C#。
谢谢!
更新:谢谢大家的答案!
答案 0 :(得分:11)
您可以通过Privoxy使用filter files执行此操作。他们的fun filter就是你想要做的替换的一个很好的例子。
在cnn.com上用“Ridiculous Title Blocked”取代“Two LA Dogs Marry”,你的行动档案将如下所示:
{ +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
答案 1 :(得分:4)
本地HTTP代理是可行的,也是最通用的方法。
即。您可以使用Fiddler查看它是否适合您。除了定期观看流量外,我还支持修改请求/响应。
答案 2 :(得分:4)
如果您使用Firefox,另一个选择是使用Greasemonkey脚本。这是一个example script,它改变了cnn.com上的主要标题
如果您不熟悉制作Greasemoney脚本所需的Javascript编码,您可以使用Platypus add-on编辑页面并自动生成脚本文件。
答案 3 :(得分:2)
您可以使用HTTPListener设置代理。但我想如果你想做得对,你需要一个更低级别的程序。
我从一个简单的代理开始,它只是转发所有请求并返回所有响应。一旦到位,您就可以开始检查响应。
这是一个很好的起点。
答案 4 :(得分:2)
这种方法是做你想要实现的目标效率最低的方法。
如果这是客户端应用程序,客户端可能会禁用它,从而使其无效。 它也很难维护,需要更复杂的编程才能确保它与SSL协同工作。
我相信你所要做的就是完全重新发明轮子。
您提供赏金的事实引发了您确实需要在C#和客户端执行此操作的问题,但“审查坏事”意味着您需要禁止内容,并且任何客户端方法最终都会给予权力给客户删除此限制。
就我个人而言,Squid取得了巨大的成功,而且content adaptation features。
这意味着客户端需要拥有受控的Internet源。这意味着,如果它们都在局域网中并共享一个公共Internet网关,那么如果您有一台服务器来充当代理,那么这很容易实现。
我建议你得到一个小的linux盒子,它可以有一个简单的Ubuntu Server Edition,然后添加Squid。网上有很多教程,但即使没有教程,实施水平也很容易实现。
我可能完全偏离主题,但我希望我可以提供帮助。
答案 5 :(得分:1)
好的,这是一个笑话,答案是你可以为这类任务实现浏览器插件。或者您可能需要在路由器上实现ROUTING过滤器(类似GFW)。
答案 6 :(得分:1)
取自here。
可以通过Windows上的Layered Service Provider来完成。
来自维基百科:
"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). "
答案 7 :(得分:0)
您是说要为自己的网站拦截此内容吗?
无论如何,它需要在javascript或jQuery中完成,因为C#不是客户端语言。
答案 8 :(得分:0)
或者,你可以编写一个工具栏代码,或者一个简单的chrome插件,这很简单,但它不是C#
您可以搜索库以监控通过代理进行浏览,如下所示:
http://httpproxynet.codeplex.com/
此项目中java使用的相同概念: http://www.charlesproxy.com/
听起来很有意思,祝你好运:)答案 9 :(得分:0)
很久以前我使用Plugable Mime Filters为IE实现了这个功能,所以在stackoverflow中我在c#中搜索了这个功能后,我已经创建了这篇帖子,应该可以帮助你开始它
希望这对你有用。
答案 10 :(得分:0)
Asynchronous Pluggable Protocols可用于此类事情。虽然如此处INFO: Implementing HTTP-like Asynchronous Pluggable Protocols所述:“由于各种原因,Microsoft既不支持也不建议您替换或包装默认的HTTP协议。”