リダイレクトされているページを調査してみる

概要

調査したいSPページのURL一覧に対して、metaタグでrefreshを指定しているURL一覧を抽出したい

インプットファイル(input.txt)

http://XXXXXXX
http://XXXXXXX

ソース

use strict;
use warnings;
use LWP::UserAgent;
use HTML::TreeBuilder;

# iphoneのフリをする
my $user_agent = "Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13F69 Safari/601.1";

# file指定
my $input="input.txt";
my $output="output.txt";
my @files;

# input file読み込み
open (IN, $input) or die "$!";
while (<IN>) {
 push(@files, $_);
}
close (IN);

# input fileの中身を調査する
foreach my $var(@files){
 # 改行コードの削除
 $var =~ s/(\r\n|\r|\n)$//g;
 my $url = $var;

 # 0.5秒sleepする
 select undef, undef, undef, 0.5;

 # LWPを使ってサイトにアクセスし、HTMLの内容を取得する
 my $ua = LWP::UserAgent->new('agent' => $user_agent);
 my $res = $ua->get($url);
 my $content = $res->content;

 # HTML::TreeBuilderで解析する
 my $tree = HTML::TreeBuilder->new;
 $tree->parse($content);

 # 必要なタグを抜き出す
 foreach my $tag ($tree->find("meta")) {
 # metaタグ内にrefreshがあるものを抽出する
 if ($tag->as_HTML =~ /refresh/){
 # 調査対象となるURLとmetaタグをoutput fileに出力
 open (OUT, ">>$output") or die "$!";
 print OUT $url.",".$tag->as_HTML."\n";
 close (OUT);
 }
 }
}

アウトプット(output.txt)

http://XXXXXXX,<meta URL=http://XXXXXXX" http-equiv="refresh" />