在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 抓取或其他通訊任務達到所需的行為。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3