1. ホーム
  2. java

[解決済み] java.io.IOException: Server returned HTTP response code: 403 for URL [重複].

2022-02-07 06:28:24

質問

私のコードはこんな感じです。

URL url;
URLConnection uc;
StringBuilder parsedContentFromUrl = new StringBuilder();
String urlString="http://www.example.com/content/w2e4dhy3kxya1v0d/";
System.out.println("Getting content for URl : " + urlString);
url = new URL(urlString);
uc = url.openConnection();
uc.connect();
uc.getInputStream();
BufferedInputStream in = new BufferedInputStream(uc.getInputStream());
int ch;
while ((ch = in.read()) != -1) {
    parsedContentFromUrl.append((char) ch);
}
System.out.println(parsedContentFromUrl);

しかし、ブラウザからアクセスした場合は問題ないのですが、Javaプログラムからアクセスしようとすると、Expectionがスローされます。

java.io.IOException: Server returned HTTP response code: 403 for URL

解決策とは?

どのように解決するのですか?

以下のコードを間に追加してください。 uc.connect();uc.getInputStream(); :

uc = url.openConnection();
uc.addRequestProperty("User-Agent", 
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");

しかし、特定のタイプのユーザーエージェントだけを許可するのは良いアイデアです。そうすることで、ウェブサイトの安全性と帯域幅の使用量を抑えることができます。

コンテンツや帯域を盗用されたくない場合、サーバーからブロックしたい悪質な「ユーザーエージェント」がある可能性があります。しかし、上の例で見たように、ユーザーエージェントは偽装することができます。