簡體   English   中英

Java:使用URL從特定服務器ip下載網頁

[英]Java : download a web page using a URL from a specific server ip

給定Java中的URL,有許多關於如何下載網頁的指南。 在這種情況下,將從DNS提供的服務器(返回托管該網頁的服務器之一的ip)中下載網頁。

我的問題是-給定服務器的特定IP,我如何使用其URL下載特定服務器中托管的網頁?

為了闡明問題,請考慮由多個服務器托管的Google之類的網站。 如果僅使用“ www.google.com” URL下載網頁,則會從其中一台托管服務器(DNS會選擇該網頁)為我提供該網頁。 但是,假設我擁有托管www.google.com的其中一台服務器的IP,並且希望從該服務器上專門下載該網頁-我將無法單獨使用該網址,因為我無法保證從正確的服務器上下載了該網頁。

該問題的完整答案還應該支持HTTPS協議。

如果地址不是SSL / TLS,則至少在目標http服務器正在使用基於名稱的虛擬主機時,在請求標頭中發送類似於host: www.google.co.jp應該可以。 https://en.wikipedia.org/wiki/Virtual_hosting#Name-based

System.setProperty("sun.net.http.allowRestrictedHeaders", "true");
URL url = new URL("http://172.217.26.100/about/"); // one of the google IP
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestProperty("host","www.google.co.jp"); // get japanese google site, you may obtain canada site by changing to `www.google.ca`
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
System.out.println(reader.readLine());

出於Java安全原因,需要設置sun.net.http.allowRestrictedHeaders我可以在使用Java的HttpUrlConnection類的地方覆蓋Host標頭嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM