這篇文章將為大家詳細(xì)講解有關(guān)使用Android爬蟲怎么模擬一個登錄功能,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
員工經(jīng)過長期磨合與沉淀,具備了協(xié)作精神,得以通過團(tuán)隊的力量開發(fā)出優(yōu)質(zhì)的產(chǎn)品。創(chuàng)新互聯(lián)建站堅持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因為“專注所以專業(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡單”。公司專注于為企業(yè)提供網(wǎng)站制作、成都網(wǎng)站制作、微信公眾號開發(fā)、電商網(wǎng)站開發(fā),小程序設(shè)計,軟件定制網(wǎng)站設(shè)計等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。
實例代碼:
package com.yasin; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import org.junit.Test; import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlInput; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput; import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput; import com.gargoylesoftware.htmlunit.html.HtmlTextInput; public class AutoLogin { String url = "http://172.16.10.3/"; @Test public void run(){ try{ WebClient webClient = new WebClient(BrowserVersion.CHROME); //htmlunit 對css和javascript的支持不好,所以請關(guān)閉之 webClient.getOptions().setJavaScriptEnabled(false); webClient.getOptions().setCssEnabled(false); HtmlPage page = (HtmlPage)webClient.getPage(url); Listforms = page.getForms(); HtmlForm form = forms.get(0); HtmlTextInput name = form.getInputByName("DDDDD"); name.setValueAttribute("/*填寫你的賬號*/"); HtmlPasswordInput pass = form.getInputByName("upass"); pass.setValueAttribute("/*你的密碼*/"); HtmlSubmitInput ok = form.getInputByName("0MKKey"); System.out.println(pass.toString()); ok.click(); }catch(Exception e){ System.out.println(e.toString()); } } }
于是接著調(diào)研,發(fā)現(xiàn)利用jsoup可以在android運行起來,不過這個庫能抓取網(wǎng)頁中的內(nèi)容,也能進(jìn)行賦值操作,但不支持模擬點擊事件,網(wǎng)上有好多例子,是利用第一次訪問獲取cookie,然后把賬號密碼再給Post到服務(wù)器,完成模擬登陸??梢晕覀兊男>W(wǎng)竟然沒有使用cookie,于是我只能抓包看看post的data有什么,然后把data直接通過post發(fā)送,不過不知道我們校網(wǎng)密碼的加密的方式,所以填寫密碼需要先去抓包,抓到自己賬號的密文,然后放到data中直接發(fā)送。成功了!
核心代碼:
public void login() throws IOException{ Mapdatas = new HashMap (); Connection con = Jsoup.connect("http://172.16.10.3/"); con.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");//配置模擬瀏覽器 Response rs= con.execute();//獲取響應(yīng) Document doc = Jsoup.parse(rs.body()); datas.put("DDDDD", "/*自己的賬號*/"); datas.put("upass", "/*自己密碼的密文,需抓包獲取*/"); datas.put("R1", "0"); datas.put("R2", "1"); datas.put("0MMKey", "123456"); System.out.println(datas.toString()); Connection con2=Jsoup.connect("http://172.16.10.3/"); con2.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0"); //設(shè)置cookie和post上面的map數(shù)據(jù).cookies(rs.cookies()) Response login=con2.ignoreContentType(true).method(Method.POST).data(datas).execute(); Message msg = new Message(); msg.what = 1; mHandler.sendMessage(msg); }
抓包方式:
點擊登錄后快速停止監(jiān)聽,獲取form data,然后把data中的值填上就好了。
總的來說,如果只是單純抓取網(wǎng)頁內(nèi)容android這一塊利用jsoup還是能實現(xiàn)的,但不支持按鈕的點擊操作;Htmlunit API更好用,也能模擬點擊事件,不過javax android并不支持,但服務(wù)器還是可以用來抓取數(shù)據(jù)的。
關(guān)于使用Android爬蟲怎么模擬一個登錄功能就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。