Simplemente use un archivo Java y ejecute el método principal. Los paquetes JAR para depender son com.alibaba.fastjson (versión 1.2.28) y jsoup (versión 1.10.2)
Si usa POM, entonces los dos siguientes son:
<Spendency> <MoupRid> com.alibaba </proupid> <artifactid> fastjson </artifactid> <versión> 1.2.28 </versión> </pendency> <pendency> <proupid> org.jsoup </groupid> <artifactid> jsoup </artifactid> <PROPORed> 1.10.2 </versión> </pendency>>
El código completo es el siguiente:
paquete com.tuniu.fcm.facade.ipproxy; import com.alibaba.fastjson.jsonObject; import org.jsoup.jsoup; importar org.jsoup.nodes.document; import java.util.arrayList; import java.util.hashmap; import java.util.list; importar java.util.arrayList; importar java.util.hashmap; import java.util.list; importar java.util.arraylist; importar java.util.hashmap; import java.util.list; importar; importación; importación; importación; importación; inyección; java.util.regex.matcher; import java.util.regex.pattern;/** * Para obtener el proxy ip, necesita * com.alibaba.fastjson.jsonObject y jSoup */public class ProxyCRALWERUNUSEDVPN {ThreadLocal <Tiseger> localwantnumber = new ThreadLocal <INTIGREGER <INTIGREGER <INTINGUREGER <INTENSEGER <) () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () (); ThreadLocal <list <ProxyInfo>> localProxyInfos = new ThreadLocal <list <ProxyInfo> (); public static void main (string [] args) {proxyCRALWERUNUNUDEDVPN proxycrawler = new ProxyCRALWERUNUNUDUSEDVPN; /*** El número de IP proxy que se obtendrá será especificado por el demandante. (Si hay demasiados, el regreso se ralentizará) */ proxycrawler.StartCrawler (1); } / *** expuesto a la entrada a llamadas de módulo externo* @param WantedNumber el número de IP proxy que la persona que llama espera obtener* / public String startcrawler (int wantedNumber) {localwantnumber.set (WantedNumber); 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/intr/", 15); Kuaidailicom ("http://www.kuaidaili.com/free/outtr/", 15); / *** construir datos de retorno*/ proxyResponse respuesta = new ProxyResponse (); respuesta.setsuccess ("verdadero"); Map <string, object> datainfomap = new Hashmap <String, Object> (); datainfomap.put ("numfound", localproxyinfos.get (). size ()); datainfomap.put ("Pagenum", 1); datainfomap.put ("proxy", localproxyinfos.get ()); Response.setData (datainfomap); String ResponseString = jsonObject.ToJson (respuesta) .ToString (); System.out.println (Response); Responsable de retorno; } private void kuaidailicom (String baseUrl, int totalPage) {String ipreg = "//d{1,3}//.//d /1,3hhabe Patrón ipptn = patrón.compile (ipreg); for (int i = 1; i <totalPage; i ++) {if (getCurrentProxynumber ()> = localwantedNumber.get ()) {return; } try {document doc = jSoup.Connect (baseUrl + i + "/") .Header ("Aceptar", "Text/Html, Application/Xhtml + Xml, Application/XMl; Q = 0.9, Image/WebP,*/*; Q = 0.8") .Header ("Acept-Incoding", "Gzip, Deflate, Sdchch"). "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, como Gecko) Chrome/51.0.10 Safari/537.36 ") .Header (" Cookie "," HM_LVT_7ED65B1CC4B810E9FD37959C9BB51B31 = 14628122444; _GAT = 1; _ga = GA1.2.1061361785.1462812244 "). "www.kuaidaili.com") .header ("referente", "http://www.kuaidaili.com/free/outha/") .timeout (30 * 1000) .get (); Matcher m = ipptn.matcher (doc.text ()); while (m.find ()) {if (getCurrentProxynumber ()> = localwantnumber.get ()) {break; } Cadena [] strs = m.group (). Split (""); if (checkProxy (strs [0], integer.parseInt (strs [1]))) {system.out.println ("Get disponible proxy ip/t" + strs [0] + "/t" + strs [1]); addproxy (strs [0], strs [1], "http"); }}} Catch (Exception e) {E.PrintStackTrace (); }}} private static boolean checkProxy (string ip, puerto entero) {try {//http://1212.IP138.com/ic.asp se puede reemplazar con cualquier página web más rápida jsoup.connect ("http://1212.IP138.com/ic.asp") .timeout (2 * 1000) .proxy (IP). devolver verdadero; } capt (excepción e) {return false; }} private int getCurrentProxynumber () {list <ProxyInfo> proxyInfos = localproxyinfos.get (); if (proxyInfos == null) {proxyInfos = new ArrayList <ProxyInfo> (); localproxyinfos.set (proxyinfos); regresar 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 <ProxyInfo> (); proxyinfos.add (nuevo proxyinfo (ip, puerto, protocolo)); } else {proxyinfos.add (nuevo proxyinfo (ip, puerto, protocolo)); }}} clase proxyinfo {private string username = ""; IP de cadena privada; String private Password = ""; tipo de cadena privada; puerto de cadena privada; privado int is_internet = 1; public proxyInfo (string ip, string puerto, tipo de cadena) {this.ip = ip; this.type = type; this.port = puerto; } 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 Password; } public void setPassword (String Password) {this.password = contraseña; } public String getType () {Tipo de retorno; } public void settype (tipo de cadena) {this.type = type; } public String getPort () {return Port; } public void setport (puerto de cadena) {this.port = puerto; } public int getis_internet () {return is_internet; } public void setis_internet (int is_internet) {this.is_internet = is_internet; }} class proxyResponse {private String éxito; mapa privado <cadena, objeto> datos; Public String getSuccess () {return éxito; } public void setSuccess (String Success) {this.Success = Success; } public map <string, object> getData () {return data; } public void setData (map <string, object> data) {this.data = data; }}El ejemplo anterior de Java Proxy Ragling Proxy IP es todo el contenido que he compartido con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.