2016-09-08 36 views
0

我的問題與MS Azure - automatically download the latest ip ranges used by MS Azure Datacenters類似,只是我試圖用java來做到這一點。Azure Microsoft Azure數據中心IP範圍下載java

我在繼續使用java從https://www.microsoft.com/en-us/download/confirmation.aspx?id=41653刮下下載鏈接,然後再從url下載它,但我認爲MS Azure應該提供一些API或更簡單的選項來執行此操作。每個人都需要在防火牆中使用白名單。

任何人有更好的選擇在Java中這樣做,請讓我知道。

感謝,

回答

0

已經把粗碼通過將downloadURL scrapeing後,提取IP地址。未來,如果Azure在下載網址中更改某些內容,則可能無法正常工作。

private static final String baseURI = "https://www.microsoft.com/en-us/download/confirmation.aspx?id=41653"; 
private static final String downloadURI_Part = "https://download.microsoft.com"; 
private static final String HREF = "href"; 

public static void main(String[] args) { 
    new DownloadXML().parse(); 
} 

public void parse() { 
    try { 
     URL url = new URL(baseURI); 
     String downloadURL = ""; 
     org.jsoup.nodes.Document doc1 = Jsoup.connect(url.toString()).get(); 
     Elements newsHeadlines = doc1.select("a"); 
     for (org.jsoup.nodes.Element element : newsHeadlines) { 
      if (element.hasAttr(HREF) && element.getElementsByAttribute(HREF).attr(HREF) 
        .contains(downloadURI_Part)) { 
       downloadURL = element.getElementsByAttribute(HREF).attr(HREF); 
       System.out.println(element.getElementsByAttribute(HREF).attr(HREF)); 
      } 
     } 
     System.out.println(downloadURL); 
     URL url1 = new URL(downloadURL); 
     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
     Document doc = dBuilder.parse(url1.openStream()); 
     doc.getDocumentElement().normalize(); 
     NodeList nRegionList = doc.getElementsByTagName("Region"); 
     System.out.println("----------------------------"); 

     for (int nRegionCount = 0; nRegionCount < nRegionList.getLength(); nRegionCount++) { 
      Node nRegionNode = nRegionList.item(nRegionCount); 
      System.out.println("\nCurrent Element :" + nRegionNode.getNodeName()); 
      if (nRegionNode.getNodeType() == Node.ELEMENT_NODE) { 
       Element eElement = (Element) nRegionNode; 
       System.out.println("Region name: " + eElement.getAttribute("Name")); 
       NodeList nIPRangeList = eElement.getChildNodes(); 
       for (int iprangecnt = 0; iprangecnt < nIPRangeList.getLength(); iprangecnt++) { 
        Node nIPRNode = nIPRangeList.item(iprangecnt); 
        if (nIPRNode.hasAttributes()) { 
         // get attributes names and values 
         NamedNodeMap nodeMap = nIPRNode.getAttributes(); 
         for (int i = 0; i < nodeMap.getLength(); i++) { 
          Node node = nodeMap.item(i); 
          System.out.println("attr name : " + node.getNodeName()); 
          System.out.println("attr value : " + node.getNodeValue()); 
         } 
        } 
       } 
      } 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
}