403エラーとは？Webスクレイピング実行時のエラー解決方法を解説

Webスクレイピングを実行していると、403エラーが表示されて、データの抽出ができないことがあります。403エラーには、さまざまな原因があります。この記事では、Webスクレイピングの初心者の方に向けて、403エラーの原因や403エラーの解決策を解説します。

<h2>403エラーとは</h2>

「403 Forbidden」とは、そのWebサイトが閲覧禁止の状態であることを示すHTTPステータスコードです。HTTPステータスコードとは、Webブラウザから送信されるリクエストに対して、Webサーバーから返信される処理結果を示す3桁の数字を指します。すなわち、403がHTTPステータスコードになります。

<h2>403エラーのさまざまな原因について</h2>

403エラーが発生する原因はさまざまです。ほとんどの場合は、管理者側のミスが原因で403エラーが発生します。よくある403エラーの原因としては、以下のようなものがあります。

1・アクセス権限の設定ミス

2・indexファイルが存在しない

3・Webサイトへのアクセスが集中している

4・Webサーバーの正しいディレクトリに、コンテンツがアップロードされていない

5・DNSの設定ミス

ここでは、これらのさまざまな原因について解説します。

<h3>1・アクセス権限の設定ミス</h3>	

Webサイトの管理者が、アクセス権限の設定をミスしているケースがあります。この場合、閲覧許可であるべき設定が閲覧拒否の設定になっています。ファイルやディレクトリのアクセス権のことを、パーミッションといいます。このパーミッションの設定で、読み込み拒否になっているファイルにアクセスすると、403エラーが発生します。また「.htaccess」の記述ミスで、403エラーになる場合もあります。

<h3>2・indexファイルが存在しない</h3>
Webサイトのトップページのファイル名は「index.html」または「index.php」でなければいけません。indexファイルが存在しない場合は、403エラーが表示されます。

<h3>3・Webサイトへのアクセスが集中している</h3>
Webサイトに、アクセスが集中していると403エラーの表示がでます。レンタルサーバーでは、サーバー負荷の低減のために、アクセス超過になると403エラーになってしまいます。

<h3>4・Webサーバーの正しいディレクトリに、コンテンツがアップロードされていない</h3>
Webサーバーの正しいディレクトリに、コンテンツがアップロードされていない場合も403エラーが表示されます。この問題の原因は、FTPクライアントの設定の間違いやディレクトリが不適切の場合などがあります。

<h3>5・DNSの設定ミス</h3>
DNSの設定が間違っていると、403エラーが表示されます。DNSとは、Domain Name Systemの略でIPアドレスとドメインとを紐づけるシステムです。

<h2>Webスクレイピングで403エラーが発生するのはなぜ？</h2>

Webスクレイピングで403エラーが発生するのは、いくつかの理由があります。Webスクレイピングを正常に完了させるためにも、403エラーの原因を特定しなくてはなりません。

Webサイトからデータを抽出する際に、403エラーが表示される原因としては、以下の理由が考えられます。

1・アクセス権限もしくは所有権がない

2・Webサーバーがアクセスを拒否している（ブラウザ以外からのリクエストを拒否している）

最近のWebサイトは、スクレイピング対策をしているケースがあります。その場合はWebサーバーが、受け取るリクエストヘッダー内の情報（ユーザーエージェントが含まれる）を分析して、スクレイピングボットと判断した場合にアクセスを拒否します。そのため、Webブラウザからは正常に閲覧できますが、クローラーよりスクレイピングをしようとすると403エラーになってしまいます。

<h2>スクレイピング時の403エラーの対処方法</h2>

403エラーが表示された際には、原因を特定して適切に対処する必要があります。ここでは、スクレイピング時の403エラーの対処方法について解説します。

<h3>1・ユーザーエージェント（デバイス）を切り替える</h3>
ユーザーエージェントとは、Webサイトにアクセスするデバイスやブラウザ、バージョン、使用言語などの情報のことです。スクレイピングにおけるユーザーエージェントは、デバイス+ブラウザになります。

ユーザーエージェントは、Webサイトにアクセスした際に、そのWebサイトのサーバーに送信されます。ユーザーエージェントを受信したサーバーは、ユーザーエージェントの情報をもとに、適切なWebページの情報を返します。

具体的な例では、スマートフォンのブラウザでWebサイトにアクセスした際に、サーバーはユーザーエージェントをもとにして、スマートフォンに適したレイアウトのWebページを返します。

<h4>Octoparseのユーザーエージェント機能</h4>

Octoparseは、403エラーの対処方法として、ユーザーエージェント機能を備えています。ユーザーエージェントを切り替えることにより、403エラーを回避します。ここでは、Octoparseのユーザーエージェント機能を解説します。

<h5>A・内蔵ブラウザ</h5>

Octoparseは、主要なユーザーエージェントをあらかじめ搭載した内蔵ブラウザがあります。この内蔵ブラウザを切り替えることで、403エラーの対処が可能です。Octoparseでは、新しいサイトはsafari 15.1、古いサイトはChrome 78.0 for Linuxの使用を推奨しています。

内蔵ブラウザの切り替え方法

a・画面右上の「タスク設定」をクリック
![图片 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/6b63fa61-c09a-d177-4a87-38364a7c7023.png)


b・「実行設定」→「内蔵ブラウザ」を選択
![图片 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/742009af-0f42-6411-fe9e-bad1ccff8c3e.png)



c・主要なブラウザ（モバイル版を含む）だけでなく、Googleのボット（google bot）もあります。
![图片 3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/cd72a41c-e70a-e010-e476-2d11bc441313.png)



d・内蔵ブラウザを切り替えて、保存ボタンを押します。これで、新しいユーザーエージェントが対象Webサイトのサーバーに送信され、Webページも自動で更新されます。
![图片 4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/c62d4de9-566c-eab2-44b5-6eb09b7fbcf7.png)


<h5>B・カスタムユーザーエージェント機能</h5>

内蔵ブラウザの切り替えを行っても403エラーが表示される場合は、カスタムユーザーエージェント機能の使用をおすすめします。カスタムユーザーエージェント機能であれば、実際に動作している自身のユーザーエージェントであるため、403エラーのリスクを軽減できます。

ここでは、Octoparseのカスタムユーザーエージェント機能で、403エラーを回避する方法を解説します。

<h6>ユーザーエージェントを取得する</h6>

**方法1**

Chromeブラウザを使った例で解説します。最初にアドレスバーに「chrome://version/」と入力します。入力をすると、以下の画像にような情報が表示されます。画像の赤枠にある[ユーザー エージェント]以降の情報をコピーして、Octoparseに貼り付けます。
![图片 5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/3a7d12a1-42fc-6500-e0a7-cfcd91478131.png)

FirefoxやEdgeなど「chrome://version/」に対応していないブラウザもあります。その場合は、以下の方法その2を使います。方法2は、Chromeにも対応しています。


**方法2**

a・Webページを右クリックして「検証」を選択します。それにより、コンソールにアクセスができます。
![图片 6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/fcda41ba-8fc0-7be5-9e4c-c0baf1098871.png)

b・次に、Webページを再読み込みします。コンソールの「ネットワーク」タブをクリックすると以下の画面が表示されます。
![图片 7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/6999468e-9702-1ab7-c82d-e8a021fe4a16.png)


c・「名前」から表示されたリクエストをクリックします。次に右側の「ヘッダー」タブをクリックして、下部のウィンドウにあるUser-Agentを見つけます。
![图片 8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/c54a4025-b12e-6748-231e-4e0c67849058.png)


d・User-Agentの行から、ユーザーエージェントの文字列をコピーします。
![图片 9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/157ef8c5-6ea6-ef85-1fb8-486b239c420e.png)


 

<h6>ユーザーエージェントをOctoparseのタスクに適用する</h6>

a・「タスク設定」ボタンを押して、設定画面に入ります。
![图片 10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/3d022acb-08c5-4f30-62bc-b68d45dbd909.png)

b・「実行設定」→「カスタムUser-Agentを追加する」をクリック。
![图片 11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/5ce9af43-7f28-c92c-949b-1052608d23b1.png)

c・「User-Agent名」は任意の名前を入力します。「User-Agent値」は、コピーしたユーザーエージェント値を貼り付けます。その後「追加」をクリックして保存します。
![图片 12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/8237c39c-86a1-e2f0-90ea-e3bb8b8eb0b3.png)

d・内蔵ブラウザから、先ほど任意の名前を付けたカスタムUser-Agentを選択します。その後、保存をクリックします。
![图片 13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/97dd6042-21a4-2514-0e2f-d71b03425602.png)


<h3>2.ブラウザの変更</h3>

ブラウザの情報はユーザーエージェントに含まれているため、スクレイピングするWebサイトのサーバーにブラウザの情報が伝えられます。同じユーザーエージェントで、頻繁にWebサイトをスクレイピングすると、Webスクレイピングボットとして検出されてしまいます。その結果、スクレイピング対策として403エラーが表示されます。そのため、403エラーを避けるには、ブラウザの変更が必要です。

<h4>内蔵ブラウザのブラウザ（ユーザーエージェント）自動切り替え機能</h4>

スクレイピング対策による403エラーを回避するために、Octoparseの内蔵ブラウザには、ブラウザ（ユーザーエージェント）自動切り替え機能があります。

内蔵ブラウザの自動切り替えの設定方法

a・「タスク設定」ボタンを押して、設定画面に入ります。
![图片 14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/54b6eb0d-bd5b-a476-2e14-5ade2fef00bf.png)


b・「ブロッキング対策設定」→「ブラウザの自動切り替え」→チェックボックスをオンにする。
![图片 15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/5d9e218f-a12a-80d3-fd38-c3a35b8a3469.png)

c・「設定」をクリックして、ブラウザリストから必要なブラウザを設定します。
![图片 16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/8c1189e0-33a5-6850-a47c-fd87ee94076f.png)


Octoparseが「PCからWebサイトにアクセス」と設定するには、「すべて選択」のチェックボックスをオンにして、「Chrome / Firefox / Safari for mobile」のチェックボックスはオフにします。Octoparseが「モバイル経由でWebサイトにアクセス」と設定するには、「Chrome / Firefox / Safari for mobile」のチェックボックスのみをオンにします。

※選択したブラウザが、全てのWebサイトで動作するわけではありません。

d・「保存」をクリックして変更を保存します。
![图片 17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/a839f993-a7b4-ad0b-b619-64eaeab3bc48.png)

e・「実行間隔」のチェックボックスをオンにして、ブラウザを切り替える時間を設定します。
![图片 18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/224e1ea2-ddf3-4663-0ae8-fb2fbb680d83.png)

<h4>再試行機能の設定</h4>

スクレイピングの際に、Webページが正常に読み込まれないケースがあります。Webページが正常に読み込まれないと、スクレイピングに支障が出てしまいます。Octoparseは、その問題を回避するために、Webページの読み込み再試行の機能があります。

A・ワークフローの「Webページを開く」もしくは「アイテムをクリック」をクリックし、再試行タブを選択します。
![图片 19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/06e05a6b-5f53-62dc-e614-7a75c7d38921.png)

B・「条件を追加」をクリックすることで、再試行の条件を指定することも可能です。
![图片 20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/6c5aa4bb-6896-caab-fde0-d675cf77140e.png)


b.1 「URL /コンテンツ/要素（XPath）」オプションと「次を含む/次を含まない」オプションの設定

読み込みを失敗すると、ブラウザに「500 Internal Server Error」や「Too many requests」などのようなメッセージが表示されます。これらのメッセージの特定の文字列を、テキストボックスに再試行の条件として入力が可能です。特定の文字列を入力して「次を含む」を選択します。Octoparseが文字列を検出した場合は、読み込みの再試行を行います。

XPath（要素や属性を指定して、情報を取得する簡潔な言語）を条件にすることも可能です。正常に読み込まれたときのXPathをテキストボックスに入力し、「次を含まない」を選択します。それにより、条件のXPathが検出されない場合は、読み込みの再試行が行われます。

また「条件を追加」をクリックすることで、複数の条件設定も可能です。
![图片 21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/cfb1d6f5-fbb6-8e1e-53d4-7bd317dafb48.png)



b.2 「回数」と「実行間隔」の設定

再試行の無制限の繰り返しを避けるために、再試行の最大回数の設定が必要です。設定することで最大回数の値に達すると、再試行が停止されます。
![图片 22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/5a5cd041-5dcb-2fdd-f29a-050052402f98.png)

b.3 「プロキシを切り替えながら再試行する」の設定

短時間のWebサイトへのアクセスを繰り返すことで、スクレイピング対策として403エラーが表示されるリスクが高まります。それを避けるために、プロキシを切り替えながら再試行が可能です。
![图片 23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/b9db6898-ff38-0e2f-8994-81c3096db3c8.png)


<h3>IPローテーションを使う</h3>

Webサイトにはスクレイピング対策として、頻繁に同一IPからのスクレイピングがあるとWebスクレイピングボットとして認識され、403エラーを表示することがあります。その対策として、複数のIPを使用しアクセスするIPローテーションがあります。

ここでは、OctoparseのIPローテーション機能を用いた403エラーの対処方法について解説します。

<h4>1・カスタムプロキシサーバ</h4>

無料または有料のプロキシサーバーを持っている方は、Octoparseのカスタマイズモードから「ローカル抽出」が利用できます。「ローカル抽出」は、ローカルコンピューターからのみ追加可能です。

<h4>2・Octoparseのクラウドサーバを利用する</h4>

Octoparseのクラウドサービスは、それぞれ唯一のIPアドレスを持つ数千のクラウドサーバーから構成されています。また、IPアドレスプール（割り当てを固定的に行わないアドレスの範囲）も常に更新しています。

カスタマイズモードから「クラウド抽出」を利用した場合、6～20のクラウドサーバーがランダムに割り当てられます。そして、さまざまなIPを転換しながらスクレイピングを実行します。これにより、スクレイピングするWebサイトからのスクレイピング対策による403エラーの可能性を最小限に抑えます。

<h4>3・プレミアムプロキシサーバ</h4>

抽出データ量が多い場合やスクレイピング対策が強いWebサイトであれば、Octoparseのプレミアムプロキシサーバを利用を推奨します。

<h2>他にも知っておきたいエラーコード一覧</h2>

ここでは、403エラー以外の知っておきたいエラーコードを紹介します。

**401 Unauthorized**

認証エラー。パスワードが必要なWebサイトに、送信したパスワードが間違っている。または、Webサイトの閲覧権限がない。

**404 Not Found**

Webサイトが見つからないときに表示されるエラー。Webサイトが削除またはURLが変わっているなどが当てはまります。

**408 Request Timeout**

リクエストの送信時間が、規定の制限時間内に終了しなかったときに表示されるエラー。

**500 Internal Server Error**

WebWebサーバ側がリクエストを実行できないときに表示されるエラー。閉鎖されたWebサイトの場合でも、表示されることがあります。

**503 Service Unavailable**

Webサーバにアクセス集中など大きな負荷がかかっている場合に、表示されるエラー。メンテナンス中など、一時的にリクエストを実行できない場合にも表示されます。

<h2>まとめ</h2>

この記事では、Webスクレイピングの初心者の方に向けて、403エラーの原因や403エラーの解決方法などを解説しました。Octoparseは、Webスクレイピング初心者の方でも安心して403エラーに対処できるように、さまざまな機能を備えています。この記事を参考にして、OctoparseでWebスクレイピングにチャレンジしてみてはいかがでしょうか。

本記事の内容は、以下より引用しています。
https://www.octoparse.jp/blog/what-is-a-403-error-and-how-to-resolve-it-when-performing-web-scraping/