ユーザーエージェントを偽装してWebスクレイピングをする
Webサイトから自動的に情報を抽出する「Webスクレイピング」ですが、IEやChrome、FireFoxなどの「ユーザーエージェント」を設定しないとサーバーから拒否されてURLにアクセスできない場合があります。Webスクレイピングのコードが既にある方は、一行のコードを変更する事でユーザーエージェントを偽装してWebスクレイピングをする事が可能となります。
Webスクレイピングのサンプルコード
WebスクレイピングのサンプルコードはDelphiという言語で使用できる関数にしました。C言語や.NET FrameworkやJavaなどでも手法は同様です。適宜、変更して下さいね。
// HTMLを取得する
function getHTML(url:String):String;
var
hWinInet,hUrl :HINTERNET ;
Buffer : Array[0..1023] of Char;
ReadCount,Filesize : DWORD;
p : Pointer;
Mem : TMemoryStream;
html: String;
begin
html := ''; filesize :=0;
Mem := TMemoryStream.Create;
// WinInet関数のアプリケーションの使用を初期化
// ※ユーザーエージェントはIE11 Windows7(64bit)
hWinInet :=InternetOpen('Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko',
INTERNET_OPEN_TYPE_PRECONFIG,
nil, nil, 0);
try
if Assigned(hWinInet) then
begin
// FTPまたはHTTPのURLに接続
hUrl :=InternetOpenUrl(hWinInet,PChar(url),
nil, 0,INTERNET_FLAG_RELOAD, 0);
try
if Assigned(hUrl) then
begin
while true do
begin
// 指定バイト数づつファイルを読み込む
InternetReadFile(hUrl, @Buffer, Sizeof(Buffer), ReadCount);
// ファイルの終端でループを抜ける
if ReadCount = 0 then Break;
// 読み込んだファイル情報の格納
Filesize := Filesize + ReadCount;
Mem.Write(Buffer,ReadCount);
end;
if (Mem.size<>0) then
begin
GetMem(p,Filesize);
try
Mem.Position:=0;
Mem.ReadBuffer(p^,Filesize);
// UTF8をSjisに変換
// html :=Utf8NToSjis(pchar(p)) ;
html := pchar(p);
finally
FreeMem(p);
end;
end;
end;
finally
InternetCloseHandle(hUrl);
end;
end;
finally
InternetCloseHandle(hWinInet);
Mem.Free;
end;
Result := html;
end;
[使用例]
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.text := getHTML('URLを記述');
end;
[実行例]
ユーザーエージェントを偽装する
本題のユーザーエージェントを偽装する部分ですが、InternetOpenの第一引数に任意の「ユーザーエージェント」を指定します。
サンプルでは「Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko」が記述されていますが、これは「IE11、Windows7 64bit」との意味となります。
一般的なユーザーエージェントは次の通りです。
[Microsoft Edge Windows 10 32bit]
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240
[Microsoft Edge Windows 10 64bit]
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240
[IE11 Windows 8.1 32bit]
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
[IE11 Windows 8.1 64bit]
Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
[IE11 Windows 7 32bit]
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
[IE11 Windows 7 64bit]
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
以上となります。
注意事項
Webスクレイピングは対象サイトの利用規約やrobots.txt、または関連法律などを遵守して各自の責任において実行するようにして下さい。この記事の執筆者及び運営者は一切の責任を負いませんのでご了承ください。
参考サイト
Webスクレイピングの注意事項一覧
Webスクレイピングのノウハウを公開します(PHP用)
スポンサーリンク
関連記事
公開日:2015年09月16日
記事NO:01359
プチモンテ ※この記事を書いた人
![]() | |
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
| 🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は抒情詩、抒情的な楽曲が多い。楽曲制作は🔰2023年12月中旬 ~ | |









