設定ユーザーエージェントのjavaのURLConnection
-
22-09-2019 - |
質問
ようにしているの解析をホームページでのJavaを用いたとのURLConnection.ようにしているユーザーエージェントのようになります:
java.net.URLConnection c = url.openConnection();
c.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
はじめユーザーエージェントの一つを指定し、"Java/1.5.0_19"に追加されます。があるので、真に設定のユーザエージェントなこのほか?
解決
手オフ、http.agent
に""
システムプロパティを設定すると、トリックを行う可能性があります(私は私の目の前にあるコードを持っていません)。
あなたはして逃げるかもしれません
System.setProperty("http.agent", "");
しかし、それはそれは、起動時に値をキャッシュした場合(実際には、私はそれがないとは思わない)、あなたとURLプロトコルハンドラの初期化の間にレースを必要とするかもしれません。
プロパティは、(6u10のからアプレットが利用できる)JNLPファイルを介して、コマンドラインで設定することができます:
-Dhttp.agent=
またはラッパーコマンドのます:
-J-Dhttp.agent=
他のヒント
だけは明確化のために:setRequestProperty("User-Agent", "Mozilla ...")
は今だけで正常に動作し、最後にjava/xx
を追加しません! Javaの1.6.30以降で少なくともます。
私はnetcatを(ポートリスナー)と私のマシンに耳を傾けます:
$ nc -l -p 8080
あなたは生のHTTPヘッダ-よう要求されます何かを、見るように、それは単に、ポートでリッスンします。
とのsetRequestPropertyせずに次のhttp-ヘッダを得ます:
GET /foobar HTTP/1.1
User-Agent: Java/1.6.0_30
Host: localhost:8080
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
そしてWITHのsetRequestPropertyます:
GET /foobar HTTP/1.1
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2
Host: localhost:8080
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
あなたが見ることができるようにユーザエージェントが正しく設定されました。
全例:
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
public class TestUrlOpener {
public static void main(String[] args) throws IOException {
URL url = new URL("http://localhost:8080/foobar");
URLConnection hc = url.openConnection();
hc.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
System.out.println(hc.getContentType());
}
}
その仕 設定のユーザーエージェントのaddRequestProperty.
URL url = new URL(<URL>);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.addRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0");
HTTPサーバは、古いブラウザやシステムを拒絶する傾向がある。
ページテックブログ(WH):最も一般的なjava.net.URLConnection
の要求プロパティ「のUser-Agent」をセットに適用することができます。の、:セクションで現在のブラウザの「あなたのユーザエージェントがある」のユーザーエージェントプロパティを反映するユーザーエージェントまたはシステムのプロパティ "http.agent" ます。