Java使用HttpURLConnection檢索網站時403錯誤處理方式:
我們通過代碼方式訪問網站時會報錯:
此種情況分2中類型,
1.需要登錄纔可以訪問;
2.需要設置User-Agent來欺騙服務器。
- connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
User Agent說明:
User Agent中文名爲用戶代理,簡稱 UA,它是一個特殊字符串頭,使得服務器能夠識別客戶使用的操作系統及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。
一些網站常常通過判斷 UA 來給不同的操作系統、不同的瀏覽器發送不同的頁面,因此可能造成某些頁面無法在某個瀏覽器中正常顯示,但通過僞裝 UA 可以繞過檢測。java訪問網站代碼:
- /**
- * 發起http get請求獲取網頁源代碼
- * @param requestUrl
- * @param isUserAgent 是否設置欺騙服務器
- * @return
- */
- public static String httpRequest(String requestUrl,boolean isUserAgent) {
- StringBuffer buffer = null;
- try {
- // 建立連接
- URL url = new URL(requestUrl);
- HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();
- httpUrlConn.setDoInput(true);
- httpUrlConn.setRequestMethod("GET");
- if(isUserAgent){
- httpUrlConn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
- }
- // 獲取輸入流
- InputStream inputStream = httpUrlConn.getInputStream();
- InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
- BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
- // 讀取返回結果
- buffer = new StringBuffer();
- String str = null;
- while ((str = bufferedReader.readLine()) != null) {
- buffer.append(str);
- }
- // 釋放資源
- bufferedReader.close();
- inputStreamReader.close();
- inputStream.close();
- httpUrlConn.disconnect();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return buffer.toString();
- }
執行結果:順利獲取到網頁代碼。