Utilisez simplement un fichier Java et exécutez la méthode principale. Les packages JAR sur lesquels dépendent sont com.alibaba.fastjson (version 1.2.28) et jsoup (version 1.10.2)
Si vous utilisez POM, les deux suivants sont:
<dependency> <proupId> com.alibaba </rompuprid> <letifactive> fastjson </retifactid> <version> 1.2.28 </-version> </dependency> <dependency> <proupId> org.jsoup </proupId> <ERFACTID> JSOUP </ artifactid> <version> 1.10.2 </DERNIFRIMING> </Dependency>
Le code complet est le suivant:
package com.tuniu.fcm.facade.ipproxy; import com.alibaba.fastjson.jsonObject; import org.jsoup.jsoup; import org.jsoup.nodes.document; import java.util.arraylist; import java.util.hashmap; import java.util.list; import java.util.map; import; java.util.regex.matcher; import java.util.regex.pattern; / ** * Pour obtenir la proxy ip, vous avez besoin de * com.alibaba.fastjson.jsonObject et jsoup * / public class proxycralwerunusedvpn {threadlocal <inger> localwantedNumber = new ThreadLocal <INTERGER> (); ThreadLocal <list <pralyinfo>> localProxyInfos = new ThreadLocal <list <pratxyInfo>> (); public static void main (String [] args) {proxycralwerunUsedvpn proxycrawler = new proxycralwerunUsedvpn; / ** * Le nombre d'IPs proxy à obtenir doit être spécifié par le DeMander. (S'il y en a trop, le retour ralentira) * / proxycrawler.startcrawler (1); } / ** * exposé à l'entrée des appels de module externe * @param wantedNumber le nombre d'IPs proxy L'appelant prévoit d'obtenir * / public startRcrawler (int wantNumber) {localwantedNumber.set (WANDNUMBER); kuaidailicom ("http://www.xicidaili.com/nn/", 15); kuaidailicom ("http://www.xicidaili.com/nt/", 15); kuaidailicom ("http://www.xicidaili.com/wt/", 15); kuaidailicom ("http://www.kuaidaili.com/free/inha/", 15); kuaidailicom ("http://www.kuaidaili.com/free/intrt/", 15); kuaidailicom ("http://www.kuaidaili.com/free/outtr/", 15); / ** * Construire des données de retour * / ProxyResponse Response = new ProxyResponse (); réponse.setsuccess ("true"); Map <string, objet> datainfomap = new hashmap <string, object> (); datainfomap.put ("numFound", localProxyInfos.get (). size ()); datainfomap.put ("pagenum", 1); datainfomap.put ("proxy", localProxyInfos.get ()); réponse.setData (datainfomap); String ResponseString = jsonObject.tojson (réponse) .toString (); System.out.println (ResponseString); retourner Responsestring; } private void kuaidailicom (string bunterl, int totalpage) {string ipreg = "//d{1,3 }//./dd{1,3 }////d{1,3 }////d {1,3 aty/////d{1,3} // d {1,6}";; Pattern ipptn = motive.Compile (iPreg); for (int i = 1; i <totalPage; i ++) {if (getCurrentProxYnumber ()> = localwantedNumber.get ()) {return; } essayez {document doc = jsoup.connect (substanl + i + "/") .header ("accepter", "text / html, application / xhtml + xml, application / xml; q = 0.9, image / webp, * / *; q = 0.8"). "Zh-Cn, Zh; Q = 0,8, en; Q = 0,6") .Header ("Cache-Control", "Max-Age = 0") .header ("User-Agent", "Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_11_4) Applewebkit / 537.36 (khtml, comme gecko) Chromo Safari / 537.36 ") .header (" Cookie "," HM_LVT_7ED65B1CC4B810E9FD37959C9BB51B31 = 1462812244; _GAT = 1; _GA = GA1.2.1061361785.1462812244 "). "www.kuaidaili.com") .header ("référer", "http://www.kuaidaili.com/free/outha/") .timeout (30 * 1000) .get (); Matcher m = ipptn.matcher (doc.text ()); while (m.find ()) {if (getCurrentProxyNumber ()> = localwantedNumber.get ()) {break; } String [] strs = m.group (). Split (""); if (checkProxy (strs [0], Integer.ParseInt (strs [1]))) {System.out.println ("Get Disponible IP / T" + STRS [0] + "/ T" + STRS [1]); addProxy (strs [0], strs [1], "http"); }}} catch (exception e) {e.printStackTrace (); }}} private static boolean CheckProxy (String ip, port entier) {try {//http://1212.ip138.com/ic.asp peut être remplacé par n'importe quelle page Web plus rapide jsoup.connect ("http://1212.ip138.com/ic.asp"). Retour Vrai; } catch (exception e) {return false; }} private int getCurrentProxyNumber () {list <proxyinfo> proxyInfos = localProxyInfos.get (); if (proxyInfos == null) {proxyInfos = new ArrayList <PratxyInfo> (); localProxyInfos.set (proxyInfos); retour 0; } else {return proxyInfos.size (); }} private void addProxy (String ip, String Port, String Protocol) {list <proxyInfo> proxyInfos = localProxyInfos.get (); if (proxyInfos == null) {proxyInfos = new ArrayList <PratxyInfo> (); proxyinfos.add (nouveau proxyinfo (IP, port, protocole)); } else {proxyinfos.add (new proxyInfo (ip, port, protocole)); }}} classe proxyInfo {private String username = ""; chaîne privée ip; Private String Password = ""; type de chaîne privé; port de chaîne privé; private int is_internet = 1; public proxyInfo (chaîne ip, port de chaîne, type de chaîne) {this.ip = ip; this.type = type; this.port = port; } public String getUserName () {return username; } public void setUsername (String username) {this.userName = username; } public String getIP () {return ip; } public void setIP (String ip) {this.ip = ip; } public String getPassword () {return mot de passe; } public void setPassword (String Motword) {this.password = mot de passe; } public String getType () {return type; } public void setType (String Type) {this.type = type; } public String getport () {return port; } public void setport (string port) {this.port = port; } public int getis_internet () {return is_internet; } public void settis_internet (int is_internet) {this.is_internet = is_internet; }} classe ProxyResponse {Success de la chaîne privée; Carte privée <chaîne, objet> données; public String getSUCCESS () {return Success; } public void setSuccess (String Success) {this.success = succès; } Public Map <String, objet> getData () {return data; } public void setData (map <string, objet> data) {this.data = data; }}L'exemple ci-dessus de Java Proxy rampant IP proxy est tout le contenu que j'ai partagé avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.