设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 36|回复: 1

[其他] python采抓取app数据

[复制链接]

10

主题

108

金钱

174

积分

入门用户

发表于 2021-7-5 16:23:53 | 显示全部楼层 |阅读模式
最近大家一直在关注滴滴的相关消息,相信大家或多或少都有了解。一方面是大家发现打车现在已经离不开滴滴,滴滴的影响力已经不知不觉超乎我们的预期;另一方面就是比较敏感的用户网络隐私安全。滴滴作为目前国内领头的打车服务提供商,对中国互联网业务延伸拓宽是有积极作用的,这一点毋庸置疑,但是随着影响力加大,市场垄断、信息不规范获取的问题也突显出来。
和pc 端数据一样,移动端的数据也是可以抓取的,那么App数据好抓取吗?只要是数据获取肯定有难有易的。对于app数据来说,简单的就是app的数据比web端数据更容易抓取,基本都是http、https协议,返回的数据格式也相对规整。那困难的也是真的很困难,需要掌握的技能比较多,比如app逆向、app脱壳、破解加密等。app抓取和网页一样也是会需要反爬的,所以基本的加代理,研究反爬策略也是必须的。
部分抓取app代码分享:
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 {    # 代理服务器(产品官网 www.16yun.cn)    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("https://www.xiaohongshu.com/");        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中流经的网络数据包,捕获原始的数据,如果我们可以分析得到请求的URL和参数的规律,直接用程序模拟即可批量抓取,这当然最好不过了。但是随着技术的发展,App接口往往会带有密钥,我们并不能直接找到这些规律,所以我们需要学习更多的技术。



17

主题

561

金钱

2260

积分

中级用户

发表于 2021-7-8 00:57:12 | 显示全部楼层
很好,谢谢分享。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表