在Java中使用URLConnection解析網頁時,正確設定使用者代理程式至關重要。但是,預設情況下,指定的使用者代理程式會附加「Java/1.5.0_19」。當嘗試隱藏或模擬特定瀏覽器時,這可能是一個問題。
澄清並解決
在Java 版本1.6.30 及更高版本中,用戶代理的問題追加不再存在,並且setRequestProperty("User-Agent" , "Mozilla ...") 按預期工作。為了驗證這一點,可以設定連接埠偵聽器來擷取 HTTP 標頭。
在未使用 setRequestProperty 的情況下發送請求時,HTTP 標頭將包括:
User-Agent: Java/1.6.0_30
但是,當setRequestProperty 用來設定特定的使用者代理,HTTP標頭將反映指定的value:
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
範例程式碼
以下程式碼提供如何設定使用者代理程式和擷取網頁內容類型的完整範例:
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()); } }
以上是如何設定Java URLConnection的用戶代理程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!