若有收穫,就點個贊吧
做爬蟲的都知道現在越來越多的網站也已經應用了逆向技術對其資料介面進行了保護,在做爬蟲時如果我們遇到了這種情況,我們可能就不得不硬著頭皮來去想方設法找出其中隱含的關鍵邏輯了,這個過程我們可以稱之為爬蟲逆向。
今天給大夥分享一下關於某 APP 的逆向分析並抓取資料,關於 APP 的反爬會麻煩一些,比如 Android 端的程式碼寫完一般會進行打包並混淆加密加固,所以除了抓包之外,還需要對 APP 進行查殼脫殼反編譯等複雜操作。和客戶端獲取資料一樣,獲取app資料的時候也會觸發反扒機制,特別是像封IP,一般遇到封IP行為我們只要加上代理就可以很好的解決掉。關於代理的使用方式在程式裡面的是大同小異的, 工欲善其事,必先利其器,所以我們在選代理的時候必須要實際測試看真實性效果,比如億牛雲就是比較靠譜的代理商,代理在裡面的實現具體例項如下:
import org.apache.commons.httpclient.Credentials; import org.apache.commons.httpclient.HostConfiguration; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.UsernamePasswordCredentials; import org.apache.commons.httpclient.auth.AuthScope; import org.apache.commons.httpclient.methods.GetMethod; import java.io.IOException; public class Main { # 代理伺服器(產品官網 ) private static final String PROXY_HOST = "t.16yun.cn"; private static final int PROXY_PORT = 31111; public static void main(String[] args) { HttpClient client = new HttpClient(); HttpMethod method = new GetMethod("); HostConfiguration config = client.getHostConfiguration(); config.setProxy(PROXY_HOST, PROXY_PORT); client.getParams().setAuthenticationPreemptive(true); String username = "16ABCCKJ"; String password = "712323"; Credentials credentials = new UsernamePasswordCredentials(username, password); AuthScope authScope = new AuthScope(PROXY_HOST, PROXY_PORT); client.getState().setProxyCredentials(authScope, credentials); try { client.executeMethod(method); if (method.getStatusCode() == HttpStatus.SC_OK) { String response = method.getResponseBodyAsString(); System.out.println("Response = " + response); } } catch (IOException e) { e.printStackTrace(); } finally { method.releaseConnection(); } } }
從以上最簡單的app逆向爬蟲中我們可以看到現在資料加密已經很普遍了,隨便一個很小的 app 都有好幾道資料保護機制,以上還只是涉及到 java 層的加密,還有很多更復雜的加密機制等著我們去破解,所以我們需要不斷的更新我們的爬蟲知識。