トップ «前の日記(2010-05-07(Fri)) 最新 次の日記(2010-05-11(Tue))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2010-05-08(Sat) 晴れだ

301うざい

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や内容が変った場合はあしからず。

index.htmlは ここから。