爬虫爬取某数字app的房屋信息

声明:本文只是用来学习交流,并不是用来使用爬虫恶意爬去别人劳动成果,本文只是用来作为研究分享爬虫的思路,加强开发人员在日常开发工作中的安全意识。

缘起

从广州回来的时候,第一件要解决的事情就是租房。由于房屋信息比较分散,并且租房的需求是找到某个关键地点一两公里附近的房屋信息,由于58,赶集,豆瓣的信息提供的太分散,并且有新的房屋信息不能及时通知人。所以想抓取各大网站租房信息,就必须使用爬虫爬去信息。

信息的两种来源方式

  • web网页分析页面结构使用正则进行匹配
  • app的接口

两种方式的比较,web端需要分析网页的html结构使用正则获得需要的数据,由于web端会经常进行调整所以相比而言爬去数据比较麻烦。接口api一般很少做调整并且获得数据可以直接使用。所以在准备爬数据是优先爬去接口。

作为后端程序员开放接口这活就是日常,在开发接口中肯定会对接口进行签名,那么抓取接口的难点就是如何获得签名的key及签名方式。

web端抓取数据步骤:

  1. 获得网页地址
  2. 分析网页结构
  3. 分析网页之间的跳转关系
  4. 使用抓包工具抓包
  5. 爬取数据
  6. 突破反爬限制

app接口爬去数据步骤:

  1. 使用抓包工具
  2. 手机使用代理,app所有请求通过抓包工具
  3. 获得接口,分析接口
  4. 反编译apk获取key
  5. 突破反爬限制

反爬的手段很多,例如对于在一定时间内频繁访问的IP进行封接口(会误杀),并且这个很好绕过使用代理IP池就可以避免这个。

对访问的终端的限制,如果必须是浏览器可以使用代码或者第三方库进行伪装。
等等。。。 爬虫对于网站来说有利有弊,利:可以增加流量,弊端:如果爬虫过于猛烈会增加网站的负担甚至影响网站的正常的访问。这个就属于其他方面的探讨。这里我们只讲技术,对与后端开发同学,研究爬虫可以增强在日常开发中的安全意识及反爬虫意识。就像小时候学校经常带我们进行一些教育,只有实际感受了才会有深刻的感悟和教育作用。

抓包工具charles

使用charles进行简单的配置及证书下载,我们可以抓到https的请求。

通过官网下载chaeles 下载,
官网下载的如果没有付费使用几十分钟就会自定退出,这里提供一个破解版 链接. 密码: wsvq

这里需要说明,如果是专业玩爬虫的建议购买正版,支持厂商,如果只是简单的了解一下,可以使用破解版玩玩。

charles的使用配置教程,这里不再啰嗦。

如果打开charles,看到如下界面说明抓包成功,如果没有,使用浏览器进任意网站,看是是否有如果没有请参考上文配置。

如果还不行, 打开 系统偏好设置 -> 网络 -> 高级 ->代理 设置为http,https代理,不要勾选自动代理配置,由于我使用了vpn,两个代理会有冲突。

配置手机wifi代理

保持手机和电脑处于同一个wifi下,在wifi连接设置点击进入当前和电脑处于同一wifi的名称,进入高级设置,打开手动http代理 进行相关设置,

![手机wifi代理配置](https://github.com/longjiangxue/blogImage/blob/master/%E7%88%AC%E8%99%AB/wifi%E4%BB%A3%E7%90%86.png?raw=true)
  • 代理服务器主机名 电脑的局域网ip
  • 代理服务器端口 charles -> proxy -> proxy settings -> http proxy port
  • 手机安装https证书(通过charles的提示进行安装)

抓包获得接口

我们需要获取两个接口

  1. 房屋信息列表
  2. 房屋信息详情

房屋信息列表

打开某数字app进入租房列表,此时我们查看charles,可以看到如下接口,表示房屋信息列表接口。

https://apphouse.**.com/api/list/zufang?tabkey=allcity&action=getListInfo&curVer=8.0.6&appId=1&localname=haikou&os=android&format=json&v=1&geotype=baidu&location=2053%2C2168%2C10598&filterParams=%7B%7D&sidDict=%7B%22PGTID%22%3A%22187195141198731479180128291%22%2C%22GTID%22%3A%22135437582198731479180540157%22%7D&geoia=20.003844%2C110.369652&page=2

这两个参数是我们需要改变的。

  • localname:城市名称
  • page:页码数

房屋信息详情

/api/detail/zufang/32722366350641?v=1&platform=android&signature=14ca8440b15afaf0de29aa71c0bce0f7&version=8.0.2&commondata=%7B%22hasNext%22%3Atrue%2C%22nextObserverIndex%22%3A0%2C%22tracekey%22%3A%22aac6e06cd4aab542bcf7fb7d83a89103%22%7D&sidDict=%7B%22PGTID%22%3A%22166258898198663045246945925%22%2C%22GTID%22%3A%22117631756198663045234361760%22%7D&localname=haikou&format=json

其中signature是接口签名验证,如果不能拿到它的计算方式,我们拿到了接口也没有什么用。

反编译apk拿到签名验证

作为后端开发,接口签名是不可避免,服务器端的验证很难破解,因为没有办法拿到代码,但是客户端在我们手机端安装了,我们抓取接口就是想模拟象客户端一样来请求接口,既然客户端需要访问接口,那么客户端肯定有一个统一的方法来做接口验证,那么我们现在的思路就是反编译找到接口签名验证的方法。

整个获取签名验证的思路

  • 解压apk
  • 使用dex2jar反编译解压文件中的dex文件得到源码
  • jd-gui查看java源码
  • 从源码中搜索signature
  • 找到签名的key,及签名算法

解压apk

使用unzip解压apk后,我们看到有有5个dex文件:classes5.dex,classes4.dex,classes3.dex,classes2.dex,classes.dex.

使用dex2jar反编译dex

下载dex2jar,下载好之后在终端进入dex2jar文件夹,可以看得见有sh和bat文件,分别对应mac和windows。

运行 d2j-dex2jar classesX.dex ,运行后会发现dex2jar目录多了几个classesX-dex2jar.jar。

(注:如果无法执行,是因为当前用户的权限不够使用chomd 777详见《服务器基础运维指南》)

使用jd-gui查看java源码

下载jd-gui,直接双击运行,使用jd-gui打开5个jar包,在jar包中搜索signature,一路查询可以好到签名验证。

打开其中一个jar包,通过全文搜索,我们找了接口签名的统一出口,可以清晰的看见signature的值。(这里隐去)。我们可以看到有一个md5的加密方法,通过打开其他jar,找到了具体的md5签名方法。之后我们就可以模拟生成签名验证(理论来说不是模拟,我们访问就是客户端访问,因为站在服务端我们的访问和客户端的访问没有什么区别)。

到这为止我们就简单的获取到了某数字apk的房屋信息。

参考:
https://www.cnblogs.com/cuiyu...
https://www.jianshu.com/p/fdd...
https://www.127cloud.com/arch...

关注我的公众号第一时间阅读有趣的技术故事
扫码关注:

也可以在微信搜索公众号即可关注我:codexiulian
渴望与你一起成长进步!

教你如何爬取某8APP的租房信息相关推荐

  1. Python爬虫入门 | 5 爬取小猪短租租房信息

    小猪短租是一个租房网站,上面有很多优质的民宿出租信息,下面我们以成都地区的租房信息为例,来尝试爬取这些数据. 小猪短租(成都)页面:http://cd.xiaozhu.com/   1.爬取租房标题 ...

  2. Python疫起学习·万丈高楼平地起Day09(精简版|浓缩就是精华)爬虫知识附上案例爬取北京地区短租房信息、爬取酷狗TOP500的数据以及爬取网易云音乐热歌榜单

    爬虫知识 Requests库 部分运行结果如下: 有时爬虫需要加入请求头来伪装成浏览器,以便更好地抓取数据.在Chrome浏览器中按F12键打开Chrome开发者工具,刷新网页后找到User-Agen ...

  3. 爬取南京链家租房信息

    爬取南京链家租房信息 代码如下 代码片. import requests from lxml import etree if name == "main": #设置一个通用URL模 ...

  4. python爬取网上租房信息_Python爬虫入门 | 5 爬取小猪短租租房信息

    小猪短租是一个租房网站,上面有很多优质的民宿出租信息,下面我们以成都地区的租房信息为例,来尝试爬取这些数据. 1.爬取租房标题 按照惯例,先来爬下标题试试水,找到标题,复制xpath. 多复制几个房屋 ...

  5. python用scrapy爬取58同城的租房信息

    上篇我们用了beautifulsoup4做了简易爬虫,本次我们用scrapy写爬虫58同城的租房信息,可以爬取下一页的信息直至最后一页. 1.scrapy的安装 这个安装网上教程比较多,也比较简单,就 ...

  6. 爬取我爱我家租房信息时 问题总结(付代码)

    最近一直在联系爬虫,所以对一些网站抓取信息是遇到了问题,这里总结一下我爱我家的问题 在以往的练习时,xpath是我最常用的方法,这次也不例外 好的,我们开始爬取数据 第一步 ,接口查找 https:/ ...

  7. python爬取58同城所有租房信息_python爬虫:找房助手V1.0-爬取58同城租房信息

    #!/usr/bin/python # -*- encoding:utf-8 -*-importrequests frombs4 importBeautifulSoup frommultiproces ...

  8. Python爬取链家北京租房信息

    刚学习了python,中途遇到很多问题,查了很多资料,最关键的就是要善于调试,div信息一定不要找错,下面就是我爬取租房信息的代码和运行结果: 链家的房租网站 两个导入的包 1.requests 用来 ...

  9. Python爬取链家北京租房信息!北京租房都租不起啊!

    一.效果图 二.代码 import re from fake_useragent import UserAgent from lxml import etree import asyncio impo ...

最新文章

  1. 最常见核心的决策树算法—ID3、C4.5、CART(非常详细)
  2. thingsboard官网单机并发量
  3. python练习---购物车
  4. java设计模式之单例模式(七种方法)
  5. java学习(72):GUL流式布局管理器
  6. Web框架——Flask系列之数据库迁移(二十)
  7. 市场压力只有老板扛?柏明顿阿米巴如何传递经营压力
  8. python死锁案例_Python 多线程死锁
  9. c语言做的计算器小程序,c语言实现计算器小程序
  10. 模拟集成电路设计基础知识(一):MOS管结构及其I/V特性
  11. 查看Java 版本tls_如何在Java中设置TLS1.2版本
  12. 学习笔记-状态方程精确离散化
  13. HTML网页设计:八、媒体元素
  14. java短信验证码_java实现发送短信验证码
  15. SQL Server配置管理器没有任何项目
  16. 网络协议栈分析——从设备驱动到链路层
  17. Gerix Wifi Cracker破*wifi
  18. usbip--局域网内共享的USB设备
  19. 2022-2027年中国企业社交网络市场规模现状及投资规划建议报告
  20. 麒麟操作系统V10安装达梦数据库

热门文章

  1. 【C++】STL:vector
  2. Oracle行列互换
  3. 有种友谊不低于爱情,不叫暧昧,叫蓝颜
  4. 大屏幕显示屏 html,大屏幕显示器相关信息【详细介绍】
  5. Spring Boot
  6. 有了TensorFlow.js,浏览器中也可以实时人体姿势估计
  7. 【视频】波士顿动力最新“大黄蜂”版SpotMini机器人,被软银收购后走起萌路线...
  8. LeetCode笔记:Weekly Contest 280
  9. mac电脑开发环境配置-jdk、maven、git
  10. 本体技术视点 | 基于区块链的物联网(IoT)数据管理框架