Perl で短縮 URL を戻すサンプルスクリプト
2010-03-29-1
[Programming]
tinyurl や bitly などの短縮URLを元のURLに戻すサンプルスクリプトを Perl で書いてみました。
HEADリクエストなげて返ってくるデータを見るだけ。
コード(getlongurl.pl):
実行例:
コード(getlongurls.pl):
実行例:
HEADリクエストなげて返ってくるデータを見るだけ。
コード(getlongurl.pl):
#!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; my $url = shift @ARGV; my $ua = LWP::UserAgent->new(timeout => 5); my $res = $ua->head($url); my $lurl = $res->request->uri || ""; print "$lurl\n";
実行例:
% ./getlongurl.pl http://bit.ly/1RmnUT http://www.google.co.jp/ % ./getlongurl.pl http://flic.kr/p/7P5JBR http://www.flickr.com/photos/yto/4470939735/ % ./getlongurl.pl http://tinyurl.com/ybbp6e3 http://twilog.org/yto % ./getlongurl.pl http://ow.ly/1rPmd http://d.hatena.ne.jp/i_ogi/20090506/watershed % ./getlongurl.pl http://youtu.be/VtPJRbtZuJU http://www.youtube.com/watch?v=VtPJRbtZuJU&feature=youtu.be % ./getlongurl.pl http://j.mp/bIfgGG http://taisyo.seesaa.net/article/144848049.html
コード(getlongurls.pl):
#!/usr/bin/env perl use strict; use warnings; use LWP::UserAgent; my $ua = LWP::UserAgent->new(timeout => 5); while (<>) { chomp; my @c = split(/\t/, $_); my $url = $c[0]; my $res = $ua->head($url); my $lurl = $res->request->uri || ""; print "$url\t$lurl\n" if $lurl; }
実行例:
% cat getlongurls-test.txt http://tinyurl.com/ybbp6e3 http://ow.ly/1rPmd http://j.mp/bIfgGG % ./getlongurls.pl getlongurls-test.txt http://tinyurl.com/ybbp6e3 http://twilog.org/yto http://ow.ly/1rPmd http://d.hatena.ne.jp/i_ogi/20090506/watershed http://j.mp/bIfgGG http://taisyo.seesaa.net/article/144848049.html
関連
- 短縮URLのデコード
http://blog.cheki.net/archives/1554- アクセスして URL を得る方法 by PHP。
- tinyurlやbitlyのURLから元のURLを取得する (Pyro Memo)
http://d.hatena.ne.jp/piro_suke/20091104/1257318822- アクセスして URL を得る方法 by Python。
- Untiny
http://untiny.me/- 短縮URL展開ネットサービス。APIもある。
- Twitterの短縮URLを元に戻すには search.twitter.com/hugeurl?url= に問い合わせればわかることを知った (otsune's SnakeOil)
http://subtech.g.hatena.ne.jp/otsune/20090805/expandtwittershorturl- 使えるのと使えないのがある。例えば flic.kr は使えない。
- 短縮URLを展開するやつ - 短縮URLサービスで短くなったURLを元のURLに戻すよ!
http://sdkt.info/urltenkai/- 前述の search.twitter.com/hugeurl 使用なので flic.kr などには未対応。
- ApiDocumentation - bitly-api
http://code.google.com/p/bitly-api/wiki/ApiDocumentation- bitly の API。展開もできる。
履歴
- 追記100330: ご指摘を受けて修正しました。ありがとうございます。
http://b.hatena.ne.jp/kits/20100330#bookmark-20396697
$res->{_request}->{_uri}
$res->request->uri
- 追記160615: getlongurl.pl を少し修正、getlongurls.pl を追加。