在Java 中為URLConnections 自訂使用者代理
在Java 中使用URLConnection 擷取Web 內容時,通常需要設定自訂使用者代理程式準確的網站抓取和用戶模擬。但是,預設的 Java 運行時將其自己的標識符附加到用戶代理字串,這在某些情況下可能並不理想。
查詢
Java 開發人員尋求協助設定不含執行階段附加的「Java/1.5.0_19」字尾的使用者代理程式。使用者提供了一個程式碼片段,說明他們如何嘗試使用 setRequestProperty() 設定使用者代理程式。
解決方案
幸運的是,在Java 1.6.30 及更高版本中,透過setRequestProperty("User-Agent", "") 設定使用者代理可以完美地工作,無需添加任何額外的Java 運行時資訊。為了示範這一點,開發人員使用 netcat 偵聽傳入的 HTTP 請求,並觀察到自訂使用者代理程式已成功傳送,沒有 Java 後綴。
完整實作
import java.io.IOException; import java.net.URL; import java.net.URLConnection; public class CustomUserAgent { 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 中為其URLConnections 設定使用者代理,而無需任何不需要的Java 特定添加,從而確保其Web 抓取或其他通訊任務達到所需的行為。
以上是如何在沒有 Java 執行時間識別碼的情況下為 Java 中的 URLConnections 設定自訂使用者代理程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!