VPNについて詳しく解説します
Webスクレイピングをしたいのだけど、VPNやプロキシーで一番良いサービスはないだろうか!?
Linuxで使えるベストなVPNサービスを教えてほしい!
…という形に、最適なプラクティスをご紹介します。
ということで、こんにちは!
Webサイトを自動で取得する「Webスクレイピング」をする上で、必ずネックとなるのがアクセスするIPアドレスの問題です。
スクレイピングする対象のサービスの営業妨害にならない範囲でスクレイピングするのは言うまでもない当然の話ですが、Webサイトによっては、少しのアクセスでも不正なアクセスと認識してIPアドレスごとブロックしてしまうことがあります。
これを回避するためには、定期的なIPアドレス変更などの対応が必要です。
一般的にはこうした問題はプロキシーやVPNサービスを使って回避することになりますが、具体的にはどうしたら良いのでしょう?
結論を言いますと、「NordVPN」を使うのが、LinuxとWebスクレイピング用途では最適解です。
NordVPNであれば、Linux上で自動的にIPアドレスを変更し、都度ランダムなIPアドレスで接続することが出来ます。
この記事では、LinuxでNordVPNを使う、具体的な設定方法をまとめました。
ぜひ、参考にしてみてください。
- 前職はインフラエンジニアのWebライター
- プライベート・仕事の両方で毎日VPNを利用
- VPN利用歴4年 (メイン使用はNordVPN)
- 国内外でVPNを活用しながらSEOコンサルやライティングを行う
あわせて読みたい
目次
この記事のポイント!
- LinuxでのWebスクレイピングにはNordVPNが最適
- NordVPNなら、コマンドラインからでもVPN接続の制御が可能
- 具体的な設定方法とPythonスクリプトでの利用例を解説
WebスクレイピングにはVPNサービスが便利
さて、すでにお伝えした通り、Webスクレイピングをする際には、VPNサービスを利用するのが便利です。
一般的に、サーバの接続元のIPアドレスを変える場合、以下の作業のうちどれかが必要です。
- サーバ本体のグローバルIPアドレスを変更する
- プロキシーサーバを利用し、つど異なるIPアドレスで接続する
- VPNサービスを利用し、つど異なるIPアドレスで接続する
①のサーバ本体のIPアドレスを変更するという方法は一番シンプルですが、非常に面倒かつ、管理も複雑となるため、プログラミングで自動化していくには不適切ですね。
②のプロキシーサーバを利用する手もOKですが、無料のプロキシーサービスは危険ですし、有料サービスであっても信頼性に欠ける怪しいサービスが主であるのが実情です。
NordVPNならWebスクレイピングにも活用できる
それらと比べると、③のVPNサービスはかなり世界的に利用されている方法です。
中でも大手サービスである「NordVPN」は、全世界で1400万人以上のユーザが利用している、VPNの中でも老舗のサービスです。
実際、日本国内でも数多くのユーザが居ます。 ぼくも、そのうちの1人です。
VPNサービスを利用すると、再接続ごとにランダムに用意されたグローバルIPアドレスに変更されるため、わざわざ利用者側が沢山のIPアドレスを用意しなくてもOKというわけです。
もともとVPNはセキュリティ対策として使われることが主ですが、こうしたランダムなグローバルIPアドレスを経由して通信が可能なので、Webスクレイピングにも活用できます。
現在のIPアドレスはこのページで確認可能
ちなみにNordVPNには、現在のIPアドレスと、その位置情報を確認できるページが公開されています。
こちらにアクセスするとこのように、現在の自分のIPアドレスと、どの地域から接続しているかが、誰でもチェック出来るようになっているのですね。
こうしたプライバシーの侵害を回避するという目的にも、VPNサービスが幅広く使われています。
NordVPNはLinuxでも利用可能
NordVPNはLinuxでも利用可能です。
NordVPNは数多くのOSやデバイス、ブラウザに対応しています。
- Android
- Windows
- Mac OS
- iOS (iPhone/iPad)
- Linux (Debian, RHEL, Ubuntu, CentOS, etc)
- Google Chrome
- Firefox
- Microsoft Edge
- Android TV
通常、WebスクレイピングはLinux系サーバで行うことになるでしょう。
NordVPNのソフトはLinuxの主要なディストリビューションに対応しているので、インストールしておけばセキュリティの確保と同時に、ランダムに接続可能なVPNの機能をLinuxサーバで実現可能となるわけです。
GUIだけでなく、コマンドラインやシェルからの実行も可能です。
シェルにVPNの切替コマンドを記載しておけば、あとはそのシェルスクリプトを実行するだけでIPアドレスを変更して接続が可能です。
(その詳しい手順は次の項目にて!)
具体的なNordVPNの設定方法
実際にLinux上でNordVPNを利用する手順やコマンドについても解説しておきます。
まずは、NordVPNをLinuxにインストールする必要があります。
以下のページにアクセスして、NordVPNをインストールしましょう。
一般的な「apt-get」コマンドなどでインストール可能です。
1ヶ月の単月プランでは月1,370円で、
1年間プランでは570円で利用可能です。
若干の費用はかかりますが、同じことを自分で実現しようとした場合、これ以上の莫大なコストがかかります。
アクセス拒否されないほどのグローバルIPアドレスを確保するだけで…月間3〜4万円以上は軽くかかることでしょう。
それを考えたら、これぐらいの月額料金、軽いものだといえます。
インストールとアカウントが用意できたら、まずはLinuxでNordVPNへのログインが必要です。
コマンドライン(CUI)でログインする場合は、以下のコマンドを実行します。
すると、メールアドレスとパスワードを求められるので、ここでアカウント情報を入力しましょう。
nordvpn login --legacy
ログインできるとこのように「Welcome to NordVPN!」と表示されます。
上記のログイン方法が使えない場合
アクセストークンを使用したログイン方法という別の方法もありますので、上記が上手くいかない場合は、こちらの記事も参考ください。
続いて、実際に日本国内のNordVPNに接続してみます。
が!
SSH接続でLinuxサーバに接続している場合、VPN接続した時点で接続が解除されてしまい、操作不能になってしまうので、事前にSSH通信と自分のIPアドレスをホワイトリストに入れてあげる必要があります。
ということで、以下のコマンドを実行します。
nordvpn whitelist add port 22 nordvpn whitelist add subnet [自分の端末のIPアドレスとサブネットマスク]
自分の端末で固定IPアドレスを利用している方はそのIPアドレスを入力。
IPアドレスが固定でない方は、IPアドレスの範囲をサブネットマスクで入力します。
例えば、以下のような形です。
nordvpn whitelist add subnet 110.155.22.0/24
上記が入力できたら、以下のコマンドを使って実際にNordVPNのサーバに接続します。
nordvpn connect
ちゃんとホワイトリストが設定できていれば、「You are connected to Japan #***」というメッセージが表示され、無事にVPN接続できたことがわかります。
このサーバ番号はランダムで毎回変わるので、実行するのは上記のコマンドだけでOKです。
現在、VPNで利用しているIPアドレスと、そのサーバの位置、接続時間などはこのコマンドで確認できます。
実際のサーバのIPアドレスとは、異なるIPアドレスになっていることが確認できるはずです。
nordvpn status
シェルでNordVPNに接続するには
さて、ここまで解説すれば、Linuxで日常的にプログラミングやスクレイピングを実行している方はもう問題なくVPN接続可能かと思います。
補足として解説しますと、これらのnordvpnのコマンドはシェルから実行可能です。
なのでぼくの環境では、シェルで一連の操作のスクリプトを作成して、スクレイピングを行う際にこのシェルスクリプトを実行しています。
このような感じですね。
#SSHのホワイトリスト設定。 必要に応じて実行 nordvpn whitelist add port 22 nordvpn whitelist add subnet *.*.*.*/24 #NordVPNに接続 nordvpn connect #NordVPNのステータスを表示 nordvpn status
例えばPythonなどでは、簡単にシェルを実行することが可能なので、このスクリプトを実行する関数を作ってあげれば、あとは超簡単にVPN接続の切替が可能、という仕組みです。
【参考】PythonでNordVPNへ自動的に接続するスクリプト
最後に参考程度ですが、上記で作成したシェルを実行するPythonスクリプト、関数についてもご紹介しておきます。
上記のシェルとあわせてこちらの関数を設定しておけば、あとは「NordVPN()」という関数を呼び出すだけで、どんな通信もVPN経由で接続することが可能になります。
#NordVPNの接続先を変更する関数 def NordVPN(): #NordVPNの接続先を変更 print("【VPNを切り替えます】") os.system('sh ****.sh')
まとめ
以上、LinuxでNordVPNを利用する方法まとめでした!
この記事のポイント!
- LinuxでのWebスクレイピングにはNordVPNが最適
- NordVPNなら、コマンドラインからでもVPN接続の制御が可能
- 具体的な設定方法とPythonスクリプトでの利用例を解説
インストールと設定さえしておけば、あとはコマンド1つだけでVPNとIPアドレスを切り替えて通信可能なのは、とても魅力的です。
プログラミング上での処理も、かなり簡単になることでしょう。
すでにお話した通り、多少のコストがかかりますが、Webスクレイピングをしていくのであれば必要経費の範囲内だと、ぼくは思っています。
ぜひ、この方法を活用することをオススメします。
以上、ご参考までに。
それでは!