Ruby China

新手问题 不知为什么总是收到 format 为 NULL 的请求

hungyuhei · 2013年04月06日 · 最后由 edokeh 回复于 2013年04月07日 · 3805 次阅读

像这样:

ActionView::MissingTemplate (Missing template pages/error with {:locale=>[:"zh-CN"], :formats=>["NULL"], :handlers=>[:erb, :builder, :haml]}.

为什么会是 NULL,是爬虫吗?大家有没有遇过,有什么处理方法?

我们遇到过,应该就是爬虫, 我的处理方法是在 application_controller 中加了一个 filter 凡是 format 为 NULL 的请求都 rander :text => 'NULL' 不过我自己也觉得这不是什么好办法,同求解。

@zzhattzzh 这是一个异常不应该暴露给请求者,我的解决办法,放到 application.rb 里

if Rails.env.production?
 rescue_from ActionView::MissingTemplate do |exception|
 head :not_acceptable
 end
end

https://github.com/jasl/a_rails_start_up_omakase/blob/master/app/controllers/application_controller.rb

都是一些弱智或者恶意爬虫,我的做法是 rescue_from ActionView::MissingTemplate,然后强制 redirect 一个 zip bomb http://en.wikipedia.org/wiki/Zip_bomb

实践效果十分有效,对方通常是用一些第 3 方 http 库,会自动 unzip,然后就内存爆掉了 ...

#4 楼 @quakewang 这个方案我太喜欢了!

@quakewang 这个做法太猛了,给力啊

@quakewang 太牛了。。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号

AltStyle によって変換されたページ (->オリジナル) /