使用 Ruby 重定向后如何获取最终 URL?
如果http://foo.com
重定向到1.2.3.4
,然后重定向到http://finalurl.com
,我该如何使用Ruby 找出登陆网址“http://finalurl.com”?
If http://foo.com
redirects to 1.2.3.4
which then redirects to http://finalurl.com
, how can I use Ruby to find out the landing URL "http://finalurl.com"?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这里有两种方法,同时使用 HTTPClient 和 开放 URI:
Here's two ways, using both HTTPClient and Open-URI:
另一种方法是使用 Curb:
Another way, using Curb:
对于
JRuby
这有效for
JRuby
this worked我已经根据我的需要实现了 RequestResolver:
https://gist.github.com/lulalala/6be104641bcb60f9d0e8
它使用 Net::HTTP,并遵循多个重定向。它还处理相对重定向。
这是为了我的简单需求,所以可能有错误。如果你发现了请告诉我。
I have implemented a RequestResolver for my need:
https://gist.github.com/lulalala/6be104641bcb60f9d0e8
It uses Net::HTTP, and follows multiple redirects. It also handles relative redirects.
It was for my simple need so may have bugs. If you discover one please tell me.
我不是 Ruby 用户,但您基本上需要的是解释 HTTP 标头的东西。以下库似乎可以做到这一点:
http://www.ensta.fr/~diam/ruby/online/ruby-doc-stdlib/libdoc/net/http/rdoc/classes/Net/HTTP.html
跳至“以下重定向”。
I'm not much of a Ruby user, but what you basically need is something to interpret HTTP headers. The following library appears to do that:
http://www.ensta.fr/~diam/ruby/online/ruby-doc-stdlib/libdoc/net/http/rdoc/classes/Net/HTTP.html
Skip down to "following redirection."