僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
Twitterが時折表示する短いURLは、Movedの先にある、肝心のホスト名やら何やらが見えない。
$ telnet $C_HOST 80 Trying $IP... Connected to $C_HOST. Escape character is '^]'. GET /XXXXXX HTTP/1.0 HTTP/1.1 301 Moved Server: nginx/0.7.42 Date: Fri, 07 May 2010 23:26:15 GMT Content-Type: text/html; charset=utf-8 Connection: close Set-Cookie: _qqq=gqqgqggg-ggggq-ggqgg-qgqggqqg;qqqqqq=.\ qgg.qqqqq.qqqqq.qqq;qqqqqqq= Wed Nov 3 19:26:15 2010;path=/ ; HttpOnly Location: http://xxxxxxxxxxxxxx.xxx/yyyy/mm/xxxxxxxx-xx-\ xxxxx-x-xxx-xx-xxxxxx-xx-xxxx-xxxxxxxxx.xxxx MIME-Version: 1.0 Content-Length: 352 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML> <HEAD> <TITLE>Moved</TITLE> </HEAD> <BODY> <H2>Moved</H2> <A HREF="http://xxxxxxxxxxxxxx.xxx/yyyy/mm/xxxxxxxx-xx-\ xxxxx-x-xxx-xx-xxxxxx-xx-xxxx-xxxxxxxxx.xxxx">\ The requested URL has moved here.</A> <P ALIGN=RIGHT><SMALL><I>AOLserver/4.5.1 on\ http://127.0.0.1:7200</I></SMALL></P> </BODY> </HTML>Connection closed by foreign host.
Geekなぺーじに載っていたスクリプトを拝借、少し書き換える。
#!/usr/bin/env ruby require 'net/http' url = ARGV[0].split(/\//) if url[0] == 'http:' host = url[2] content = url[3] else host = url[0] content = url[1] end http = Net::HTTP.new(host) response = http.head("/#{content}") response.each do |name,value| if name == 'location' puts value end end
$ ruby http_header.rb http://bit.ly/bG8FMz http://el.jibun.atmarkit.co.jp/minagawa/2010/04/post-ebc4.html
念のため、"ホスト名" + "/" + "ランダム文字列" にも対応しておいた。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。