質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

0回答

2277閲覧

サイトの一部ページのみ503エラーが返される

T_H08

総合スコア0

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

2クリップ

投稿2021/09/24 17:31

実現したいこと

VB.Netにてサイトのデータ取得プログラムを作成しています

発生している問題・エラーメッセージ

同一ドメイン配下のうちいくつかの特定のページのみ、リクエストに対して下記の通り503エラーが返却されます。
各種ブラウザによる当該ページからのデータ取得は問題なく正常に実行できます。
(Chrome、Edghにて確認)

リモート サーバーがエラーを返しました: (503) サーバーを使用できません キャッチしたWebExceptionのプロパティ(抜粋) HResult -2146233079 Status ProtocolError {7} WebException.Responseプロパティ(抜粋) CharacterSet "ISO-8859-1" ContentEncoding "" ContentLength 263 ContentType "text/html" Cookies {System.Net.CookieCollection} Headers {Connection: close Content-Length: 263 Content-Type: text/html Date: Fri, 24 Sep 2021 17:03:04 GMT ETag:"5c1b3a08-107" Server:nginx IsFromCache:False IsMutuallyAuthenticated:False LastModified:#9/25/2021 02:05:16 AM# Method:"GET" ProtocolVersion:{1.1} ResponseUri:{取得したいサイトURLで、誤りはありません} Server:"nginx" StatusCode:ServiceUnavailable {503} StatusDescription:"Service Temporarily Unavailable" SupportsHeaders:True

おそらくリクエストヘッダに何らかの問題があると考えていますが、特定には至りませんでした。

リクエストヘッダ

Host、Cookie等は除外していますが、誤りはありません。
下記は作成中のプログラムによるリクエストヘッダ内容です(503エラーが返却されます)。

Content-Type: application/x-www-form-urlencoded;charset=utf-8 Accept: */*,text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36 Accept-Language: ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7 X-Requested-With: statusText Upgrade-Insecure-Requests: 1 sec-ch-ua-platform: Windows Sec-Fetch-Dest: document Sec-Fetch-Mode: cors Sec-Fetch-Site: same-origin Sec-Fetch-User: ?1 sec-ch-ua: Chromium;v=94,Google Chrome;v=94,;Not A Brand;v=99

下のようにSystem.Net.WebClientを継承したクラスを使い、GetWebRequestをオーバーライドしてヘッダをセットしています。
他のページに対しても同じ内容でリクエストを送信しますが、問題なくデータの取得ができています。

VB.NET

1 Protected Overrides Function GetWebRequest(address As Uri) As Net.WebRequest 2 3 Dim webRequest = MyBase.GetWebRequest(address) 4 If TypeOf webRequest Is Net.HttpWebRequest Then 5 6 With CType(webRequest, Net.HttpWebRequest) 7 .CookieContainer = _cookieContainer 8 .ContentType = "application/x-www-form-urlencoded;charset=utf-8" 9 .Accept = "*/*,text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" 10 .KeepAlive = True 11 .UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36" 12 End With 13 14 webRequest.Headers.Add(HttpRequestHeader.AcceptLanguage, "ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7") 15 webRequest.Headers.Add("X-Requested-With:statusText") 16 webRequest.Headers.Add("Upgrade-Insecure-Requests:1") 17 webRequest.Headers.Add("sec-ch-ua-platform:Windows") 18 webRequest.Headers.Add("Sec-Fetch-Dest:document") 19 webRequest.Headers.Add("Sec-Fetch-Mode:cors") 20 webRequest.Headers.Add("Sec-Fetch-Site:same-origin") 21 webRequest.Headers.Add("Sec-Fetch-User:?1") 22 webRequest.Headers.Add("sec-ch-ua:Chromium;v=94,Google Chrome;v=94,;Not A Brand;v=99") 23 End If 24 Return webRequest 25 End Function

試したこと

Chromeコンソールと比較して同内容のヘッダをセットするも、503エラーが返却されました。

補足情報(FW/ツールのバージョンなど)

.NET FrameWork4.7.2

手を尽くしたつもりではいますが、ネットワーク関連は不得手であるため簡単な見落としかもしれません。
解決法をご存じの方がいらっしゃいましたらご教示ください。
お待ちしております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/09/24 21:56 編集

503 = サービスが利用できません ・・・ということは分かってますか? それが間違いないとすると、クライアント側でできることは、サーバーが暇になるまでしばらく待ってから再度要求してみるぐらいのはずですが。
T_H08

2021/09/24 22:43

一般的な503エラーの原因については存じ上げています。 しかし本文中にも記載したとおり、ブラウザでは正常に取得することができています。 アクセス過多等によるものではなく、他に何か原因があると考えています。 先ほど試行したところ、やはりブラウザからは正しい結果を取得しますが、プログラムでは503エラーが返されます。 プログラムとブラウザで結果が異なり、その原因が特定できないため質問させていただいています。 何か解決法にお心当たりがありましたらよろしくお願いします。
YAmaGNZ

2021/09/24 22:48

ヘッダが怪しいと考えられているのであれば、うまくいくヘッダとうまくいかないヘッダを比べればいいのではないでしょうか? Fiddlerなど利用すればできるかと思います。
退会済みユーザー

退会済みユーザー

2021/09/25 00:00

常に、ブラウザでは OK、あなたのアプリでは NG で 503 応答が返ってくるということは、想像ですが、ブラウザ以外ではアクセスしてほしくないからそういう処置をしているとか? サーバーの管理者に聞いてみてはいかがですか? その前に、サーバーの管理者にあなたのアプリでアクセスすることの許可を受けてますか? クローラを使ってアクセスしたら業務妨害で逮捕されたという事例もありますのでお気を付けください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問