短縮URLの展開

先日、仕事で受信した限りなく怪しいメールに短縮URLが記載されており短縮URL展開ツールなるものを初めて使いました。

怪しいURLですが、送信者がお客さんのような、そうでないような、、開くのは勇気がいりますね。

 

で、自分でも作ってみることにしました。

 

大まかな流れとしては、[get_headers]関数で短縮URLからレスポンスを取得する。

レスポンスの中に[location]が含まれていたらそれを展開後のURLとして取得。

[location]が含まれていなければ、短縮URLではない。

 

ということで、[https://www.yahoo.co.jp/]を短縮した[http://bit.ly/1oZlTAk]で試してみる。


上記を実行してみるが、なにも返ってこない。。。

色々と試してみるが、変わりない。。

 

で、結局レンタルサーバー側の問題ということで解決。

参考:https://oshiete.goo.ne.jp/qa/8441147.html

php.iniでallow_url_fopen がオフになっていると使えないのですね。

レンタルサーバーの管理画面から設定を変更して無事解決。

 

再度、get_headersを実行して以下の情報を取得していることを確認。


8行目の

[Location] => https://www.yahoo.co.jp/

が展開後のURLになります。

 

でも、展開後のURLが最終URLとは限らない。さらに展開された場合はどうなるのだろうか?

というわけで、確認してみる。

 

http://www.yahoo.co.jp/ へアクセスすると https://www.yahoo.co.jp/ にリダイレクトされます。

ということで、http://www.yahoo.co.jp/ の短縮URLを作成して確認することにしました。

 

http://bit.ly/1MDUhek → http://www.yahoo.co.jp/ → https://www.yahoo.co.jp/

このように遷移するのでどうなるかをチェック。


9行目の

[Location] => Array ( [0] => http://yahoo.co.jp/ [1] => https://www.yahoo.co.jp/ )

 

[Location]が配列になっていました。

 

念のため、短縮URLではない場合の情報もチェック。


[Location]は存在していません。

 

ということで、以下を定義。

[Location]無し → 短縮URLではない。

[Location]配列 → 短縮URL(複数回転送されている)

[Location]配列ではない → 短縮URL(1回のみの転送)

 

ということで、以下を作成。

これでは使い勝手が悪いのでフォームからURLを入力可能にして公開しました。

短縮URL展開ツール / Shortened URL decoder

 

よかったら使ってください。

Leave a Reply

最初のコメントを頂けますか?

更新通知を受け取る »
avatar
wpDiscuz