【发布时间】:2020-07-21 21:41:24
【问题描述】:
如何使用 Ruby Webrick 在通过代理服务器时对 html 内容进行修改?
require 'webrick'
require 'webrick/httpproxy'
handler = proc do |req, res|
# if the_site_url == "youtube.com"
# html_of_the_page = "<body>Custom Html<body>"
# end
end
proxy = WEBrick::HTTPProxyServer.new(
Port: 8080,
ProxyContentHandler: handler
)
trap 'INT' do proxy.shutdown end
server.start
This question 类似,但它的解决方案不起作用。如果 Webrick 不支持内容更改功能,是否还有其他代理服务器库支持?
更新
理想情况下,我应该能够修改现有的 HTML。我认为在代表页面 html 的代理处理程序中还有一些其他变量,例如 res.body:可写、可解析、可读(无论是数据流还是完整数据)。
【问题讨论】:
-
检查这个github.com/bbtfr/evil-proxy你可以复制他们的代码或者使用它来代替项目的父类WEBrick::HTTPProxyServer
-
它说
res.body是可写的,但如果我修改它,网页不会反映更改。你知道我怎样才能改变屏幕上的实际内容吗? -
如果您将
String或String.IO重新分配给 res.body (res.body = 'Hello'),这将是您的身体,但这不是您所要求的。抱歉,但我找不到方法(res.body 返回@body,它是一个定义的 lambda #<0x000055bdd4750548 httpproxy.rb:340>0x000055bdd4750548>