PHPで無料Proxyを使ってスクレイピングをする方法

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

こんにちわ。
 

インターネットが生活に根付くほど、スクレイピング技術が手放せなくなると気がついた、下駄です。
 

このブログでは、何度もスクレイピングについて書いてきましたが、インターネットって、気がついたら、ずっといろいろなサイトを見続けてしまうじゃないですか。
 

こういう人の悪い癖を軽減するシステムを作るために、必要な情報だけを見るようにするという事を実現しようと考えています。
 

もっと具体的に言うと、「SNSの情報をよりパーソナライズして、タイムラインで無駄な記事を見るという事を無くすと時間効率も良くなるのではないか?」というような内容のシステムを作っています。
 

この時に、有名なSNSでは、規約でスクレイピングを禁止しているので、不正なことを行わないにしても、すぐに不正アクセスとみなされてしまいます。
 

そんな事態を回避するために、今回はIPアドレスを偽装する形で、Proxy経由のサイトアクセス方法を記載しておきます。

本日のIT謎掛け

「proxy」と、かけまして、
 

「バーベキューで食べるマシュマロ」と、ときます。
 

そのココロは・・・
 

串を刺すでしょう。

proxyとは・・・

知らない人の為に、簡単に説明しておくと、「プロキシ」と読みますが、Proxy-Server(プロキシ・サーバー)の一般略名です。
 

これは、通常のPCやサーバーが、インターネットにアクセスする際に、通信の安全性を確保する事を目的とした通信経由サーバーの事を言います。
 

ネット系の刑事事件で、犯人特定につながるIPアドレスにおいて、このIPアドレス部分を別のアドレスでいろいろなサイトアクセスができるようになるため、不正手段と考えられがちですが、悪いことをせずに、正規に使用している人もいるってことを、認識しておきましょう。

PHPでProxyを使ってサイトアクセスする方法

他サイトへのアクセスは、ブラウザでURLを入力して、そのページが表示されるのと同じで、PHPでは、file_get_contentsを使って、ファイル名の箇所をURLにするだけで、簡単にそのURLのHTMLソースコードを入手することができます。
 

 

なんとも簡単にアクセスできるのですが、これをproxy経由でアクセスしたい場合は、以下のようにします。
 

 

UserAgentや、過去にアクセスしたそのサイトでのcookie情報も付与してアクセスすることで、よりアクセス偽装のレベルアップができます。
(駆動用ですが、不正に使ってはいけませんよ。)
 

※注意
 
上記のプログラムのproxyサーバーのアドレスとポートは、サンプルの為、でたらめな値を入れています。
実際のプロキシサーバーの値を入れてお使いください。
また、$uaはユーザーエージェントの文字列になりますが、ここも、実際使用しているブラウザの値を入れてお使いください。
さらに、$ckのクッキーの値は、意味がわからない人は、無理に使わなくても大丈夫です。
 

“stream_context_create”を使った方法がたくさん掲載されていましたが、この方法では、IP偽装ができなかったので、
“stream_context_set_default”を使った方が良さそうです。

プロキシを使ってあれこれ

インターネットサーバーの管理をしたことがある人であれば、経験があると思いますが、不正アクセスと考えられる、大量のアクセスがあり、サーバー負荷が上昇して、最悪の場合に、サーバーダウンをしたというのは、結構なあるあるです。
 

調査をしてみると、特定のIPアドレスからのアクセスが、1分間の間に、数百、数千というレベルで行われていると分かり、少なくても機械的に行われているという事がわかります。
 

そんな不正アクセスを回避するために、任意のIPアドレスからのアクセスを停止したり、同じIPアドレスが、1分間や数秒間の間に、一定回数以上のアクセスがあったら、アクセス拒否をするという風に対処すると思いますが、
 

有名なサイトほど、こうしたアクセスセキュリティを行っている為、そうしたサイトへのアクセスをする場合に、アクセス拒否を回避するために、プロキシサーバー経由で行えれば、安心ができるという事から、今回は記事を書いてみました。
 

そういえば、特定の国のIPアドレスしか受け付けないサービスなどを、日本国内からアクセスするような場合には便利な機能とも言えますね。
 

くどいようですが、プロキシ使って、不正アクセスは駄目ですよ。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です