فقط استخدم ملف Java وقم بتشغيل الطريقة الرئيسية. حزم الجرة التي تعتمد عليها هي com.alibaba.fastjson (الإصدار 1.2.28) و JSoup (الإصدار 1.10.2)
إذا كنت تستخدم POM ، فإن الاثنان التاليين هما:
<Rependency> <roupency> com.alibaba </rougiD> <StifactId> fastjson </shintifactid> <الإصدار> 1.2.28 </version> </repreadency> <sependency> <roupiD> org.jsup </rougiD> <StifactId> jsoup </artifactid>
الرمز الكامل كما يلي:
package com.tuniu.fcm.facade.ipproxy ؛ import com.alibaba.fastjson.jsonoBject ؛ import org.jsoup.jsoup ؛ import org.jsoup.nodes.document ؛ import java.util.arrayList ؛ java.util.regex.matcher ؛ import java.util.regex.pattern ؛/** * للحصول على IP الوكيل ، فأنت بحاجة إلى * com.alibaba.fastjson.jsonobject و jsoup */public proxycralwerunusedvpn threadlocal <list <PerxyInfo >> localproxyinfos = new threadlocal <list <PerxyInfo >> () ؛ public static void main (string [] args) {proxycralWerUnusedVpn proxycrawler = new proxycralwerunusedVpn ؛ /*** يجب تحديد عدد IPs الوكيل المراد الحصول عليه بواسطة demander. (إذا كان هناك الكثير ، فإن العائد سوف يتباطأ) */ proxycrawler.startCrawler (1) ؛ } / *** يتعرض لمدخل مكالمات الوحدة الخارجية* param Wanted Number عدد IPs الوكيل يتوقع المتصل الحصول على* / public String startCrawler (int wantnumber) {localwantednumber.set (wantsnumber) ؛ kuaidailicom ("http://www.cockidaili.com/nn/" ، 15) ؛ kuaidailicom ("http://www.cockidaili.com/nt/" ، 15) ؛ kuaidailicom ("http://www.cockidaili.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) ؛ / *** إنشاء بيانات الإرجاع*/ proxyResponse = New ProxyResponse () ؛ استجابة. خريطة <سلسلة ، كائن> datainfomap = new hashmap <string ، object> () ؛ datainfomap.put ("numFound" ، localproxyinfos.get (). size ()) ؛ datainfomap.put ("pagenum" ، 1) ؛ datainfomap.put ("proxy" ، localproxyinfos.get ()) ؛ استجابة. سلسلة استجابة = jsonobject.tojson (الرد) .ToString () ؛ system.out.println (استجابة) ؛ إعادة الاستجابة ؛ } private void kuaidailicom (string baseurl ، int totalPage) {String ipreg = "//d {1،3 )////d {1،3 )////d {1،3) نمط ipptn = pattern.compile (iPreg) ؛ لـ (int i = 1 ؛ i <totalPage ؛ i ++) {if (getCurrentProxynumber ()> = localWantedNumber.get ()) {return ؛ } جرب {docum doc = jsoup.connect (baseurl + i + "/") .header ("قبول" ، "نص/html ، التطبيق/xhtml + xml ، التطبيق/xml ؛ "Zh-Cn ، Zh ؛ q = 0.8 ، en ؛ q = 0.6") .Header ("Cache-Control" ، "max-mage = 0") .header ("user-ogent" ، "mozilla/5.0 (macintosh ؛ intel mac os x 10_11_4) Applewebkit/537.36 (khtml ، like gecko) Safari/537.36 ") .Header (" ملف تعريف الارتباط "،" HM_LVT_7ED65B1CC4B810E9FD37959C9BB51B31 = 1462812244 ؛ _gat = 1 ؛ _ga = ga1.2061361785.146281244 "). "www.kuaidaili.com") .Header ("المرجع" ، "http://www.kuaidaili.com/free/outha/") .Timeout (30 * 1000) .get () ؛ matcher m = ipptn.matcher (doc.text ()) ؛ بينما (m.find ()) {if (getCurrentProxynumber ()> = localWantedNumber.get ()) {break ؛ } string [] strs = m.group (). split ("") ؛ if (checkproxy (strs [0] ، integer.parseint (strs [1])))) addproxy (strs [0] ، strs [1] ، "http") ؛ }}} catch (استثناء e) {E.PrintStackTrace () ؛ }}} private static boolean checkproxy (سلسلة IP ، منفذ Integer) {try {//http://1212.ip138.com/ic.asp يمكن استبداله بأي صفحة ويب أسرع jsoup.connect ("http://1212.ip138.com/ic.asp"). العودة صحيح. } catch (استثناء e) {return false ؛ }} private int getCurrentProxynumber () {list <PerxyInfo> proxyinfos = localproxyinfos.get () ؛ if (proxyinfos == null) {proxyInfos = new ArrayList <PerxyInfo> () ؛ localproxyinfos.set (proxyinfos) ؛ العودة 0 ؛ } آخر {return proxyinfos.size () ؛ }} private void addProxy (سلسلة IP ، منفذ السلسلة ، بروتوكول السلسلة) {list <PerxyInfo> proxyinfos = localproxyinfos.get () ؛ if (proxyinfos == null) {proxyInfos = new ArrayList <PerxyInfo> () ؛ proxyinfos.add (proxyinfo جديد (IP ، Port ، Protocol)) ؛ } آخر {proxyinfos.add (New ProxyInfo (IP ، port ، protocol)) ؛ }}} class proxyinfo {private string username = "" ؛ سلسلة IP الخاصة ؛ Private String Password = "" ؛ نوع السلسلة الخاصة ؛ منفذ السلسلة الخاص ؛ private int is_internet = 1 ؛ proxyinfo العامة (سلسلة IP ، منفذ السلسلة ، نوع السلسلة) {this.ip = ip ؛ this.type = type ؛ this.port = port ؛ } السلسلة العامة getUserName () {return username ؛ } public void setusername (string username) {this.userName = username ؛ } السلسلة العامة getip () {return ip ؛ } public void setip (string ip) {this.ip = ip ؛ } السلسلة العامة getPassword () {return password ؛ } public void setPassword (سلسلة كلمة مرور) {this.password = password ؛ } السلسلة العامة gettype () {return type ؛ } public void setType (نوع السلسلة) {this.type = type ؛ } السلسلة العامة getPort () {return port ؛ } public void setPort (String Port) {this.port = port ؛ } public int getis_internet () {return is_internet ؛ } public void setis_internet (int is_internet) {this.is_internet = is_internet ؛ }} class proxyResponse {private String Success ؛ خريطة خاصة <سلسلة ، كائن> بيانات ؛ السلسلة العامة getSuccess () {return success ؛ } public void setSuccess (سلسلة نجاح) {this.success = success ؛ } الخريطة العامة <string ، object> getData () {return data ؛ } public void setData (Map <String ، Object> data) {this.data = data ؛ }}المثال أعلاه من IP Proxy Proxy Proxy Proxy هو كل المحتوى الذي شاركته معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.