1. Fiddler 设置
这是使用 fiddler 进行手机 app 的抓包,也可以使用 Charles,burpSuite 等。。。
- 电脑安装 Fiddler,
- 手机 和 安装 fiddler 的电脑处于同一个 络里, 否则手机不能把 HTTP 发送到 Fiddler 的机器上来。
配置 Fiddler,允许”远程连接”。用 Fiddler 对 Android 应用进行抓包
启动Fiddler,打开菜单栏中的 Tools > Fiddler Options,打开“Fiddler Options”对话框。
在Fiddler Options”对话框切换到“Connections”选项卡,然后勾选“Allow romote computers to connect”后面的复选框,然后点击“OK”按钮。
在本机命令行输入:ipconfig,找到本机的 ip 地址。
2. 移动设备设置
2.1. 安卓手机设置
Android 设备上的代理服务器设置“”
- 打开 android 设备的 “设置”->“WLAN”,找到你要连接的 络,在上面长按,然后选择“修改 络”,弹出 络设置对话框,在接下来弹出的对话框中,勾选“显示高级选项”。在接下来显示的页面中,点击“代理”,选择“手动”。然后在“代理服务器主机名”后面的输入框输入电脑的ip地址,在“代理服务器端口”后面的输入框输入8888,然后点击“保存”按钮。
代理服务器主机名设为 PC 的 IP,代理服务器端口设为Fiddler上配置的端口8888,点”保存”。
然后启动 android 设备中的浏览器,访问百度的首页,在 fiddler 中可以看到完成的请求和响应数据。
2.2. IOS 应用进行抓包
打开 IPhone, 找到 络连接, 打开 HTTP 代理, 输入 Fiddler 所在机器的 IP 地址(比如:192.168.1.104) 以及 Fiddler 的端口 8888
2.3 安装证书、捕获 HTTPS
只能捕获 HTTP,而不能捕获 HTTPS 的解决办法:
- 为了让 Fiddler 能捕获 HTTPS 请求,需要在 安卓设备 或者 苹果设备上安装 证书
IOS 设备步骤:
- 首先要知道 Fiddler 所在的机器的 IP 地址:假如我安装了 Fiddle r的机器的IP地址是:192.168.1.104
- 打开IPhone 的Safari, 访问 http://192.168.0.52:8888, 点”FiddlerRoot certificate” 然后安装证书
过证书校验
上面的设置还不能抓像招商银行、支付宝等 APP的 https 包,因为这些 APP 对 https 证书进行了校验,还需要将 Fiddler 代理服务器的证书导到 Android 设备上才能抓这些 APP 的包
导入的过程:
打开浏览器,在地址栏中输入代理服务器的IP和端口,会看到一个Fiddler提供的页面:
点击页面中的 “FiddlerRootcertificate” 链接,接着系统会弹出对话框:
输入一个证书名称,然后直接点“确定”就好了。
注意:用完了, 记得把 IPhone 上的 Fiddle r代理关闭, 以免 IPhone 上不了 。
也可以使用模拟器,例如:雷电、夜神、蓝叠 等等。。
3. 斗鱼app、妹子图app
斗鱼 官 :https://www.douyu.com/ 斗鱼 app 下载:https://www.douyu.com/clientab=client#mobile
可以到 妹子图官 下载 妹子图app
创建项目 ‘douyu’
树形图展示项目
Sublime 打开项目
生成采集模块 spider
使用 genspider 在当前项目中创建 spider。语法: scrapy genspider [-t template] <name> <domain>
创建:
item.py
setting.py
设置 USER_AGENT
douyu_spider.py
pipeline.py
文件系统存储: 文件以它们URL的 SHA1 hash 作为文件名
sha1sum sha1sum对文件进行唯一较验的hash算法,
用法: sha1sum [OPTION] [FILE]… 参数: -b, –binary 二进制模式读取 -c, –check 根据sha1 num检查文件 -t, –text 文本模式读取(默认)
举例:
测试:
参考文档:http://doc.scrapy.org/en/latest/topics/media-pipeline.html
下面是你可以在定制的图片管道里重写的方法:
class 是 的扩展
- (item, info)
管道会得到文件的 URL 并从项目中下载。需要重写 get_media_requests() 方法,
并对各个图片 URL 返回一个 Request。( Must return a Request for each image URL. )
- (results, item, info)
当它们完成下载后,结果将以2-元素的元组列表形式传送到 方法 results 参数: 每个元组包含 :
-
是一个布尔值,当图片成功下载时为 ,因为某个原因下载失败为
-
是一个包含下列关键字的字典(如果成功为 True)或者出问题时为
- url – 文件下载的url。这是从 get_media_requests() 方法返回请求的url。
- path – 图片存储的路径
- checksum – 图片内容的
下面是 中 results 参数的一个典型值:
默认 get_media_requests() 方法返回 None ,这意味着项目中没有文件可下载。
item_completed(results, items, info)
当图片请求完成时(要么完成下载,要么因为某种原因下载失败),该方法将被调用
item_completed() 方法需要返回一个输出,其将被送到随后的项目管道阶段,因此你需要返回(或者丢弃)项目
举例:
其中我们将下载的图片路径(传入到results中)存储到file_paths 项目组中,如果其中没有图片,我们将丢弃项目:
默认情况下,item_completed()方法返回项目
定制图片管道:
下面是项目图片管道
启用pipelines
设置图片下载位置
是定义在 IMAGES_STORE 设置里的文件夹
启用PIPELINES:设置item后处理模块
运行爬虫
项目还缺什么item 存储、pipeline.py 编写
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!