文章目录
1. 下载并配置fiddler
前置准备:如果证书过期,参考这里https://blog.csdn.net/weixin_50902406/article/details/132022258
1.1 下载
去官网https://www.telerik.com/download/fiddler 下载fiddler的安装包。请注意,下载的是fiddler而不是filddler everywhere(因为直接网页搜索fiddler的话很容易就下载成第二个了),注意这俩下载页面都不一样噢
下载完成后进行安装,无需注册登录,如果安装成功后的页面和我一样,那就对了。
其中左边就是抓取到的网页请求了,右侧选择不同标签(比如下面的headers),可以查看该请求的详细信息。
1.2 配置证书
如果仔细观察一下就会发现,现在能够抓取到的包大多数都是HTTP的,没有HTTPS的。并且此时如果保持fiddler处于开启状态,并且打开如https://www.baidu.com的页面的时候,会显示 不安全的链接,这是由于fiddler没有配置证书的缘故所造成的。因此接下来会介绍如何配置证书
1.2.1 导出证书
打开工具栏的Tools
,选择Option
,
再选择HTTPS
的选项,先勾选Decrypt HTTPS traffic
,再勾选Ignore server certificate errors (unsafe)
最后点击最右侧的Actions
,选择将证书导出到桌面`Export Root Certificate to Desktop
现在你的桌面就应该有一个叫做FiddlerRoot.cer
的证书文件了
1.2.2 导入证书
接下来就要给浏览器导入该证书,不同的浏览器导入的方式不一样,但方法都很简单。
1.2.2.1 火狐浏览器导入证书
在导航栏中输入about:preferences#privacy
并回车,即可进入到设置的隐私页面,向下拉动窗口就可以找到证书相关的设置。
点击
查看证书
按钮,选择导入桌面的证书文件即可。
1.2.2.2 Chrome浏览器导入证书
在导航栏输入chrome://settings/security
,也是进入到设置的隐私界面
接下来点击右侧的按钮,按照提示上传证书即可。
因为对系统进行了更改,fiddler会出现黄色的提示,点击的话就会运用最新的设置。
这样一来,随便点开一个页面,fiddler就会刷刷刷显示https请求了
2. 进行街景爬取
2.1 观察街景请求
点开腾讯街景的网站,并进入到街景页面https://lbs.qq.com/tool/streetview/index.html。当鼠标在街景上点击的时候,可以看到有很多请求在fiddler快速的闪过
可以观察到每张街景图片都有自己的svid,因此只需要截取包含svid的请求,就可以通过调取接口的方式获取到街景了。
2.2 设置fiddler过滤规则
点击菜单栏的Rules
,选择Customize Rules
,就会打开一个文本编辑器的页面。
使用ctrl+f来搜索
OnBeforeRequest
,找到这个函数
在该函数的最末尾添加下面的代码
// 如果请求的url中主机名为sv1.map.qq.com,由于腾讯街景有很多个主机名,比如sv0,sv2,也可以扩大匹配规则来提高命中url的数量
// 并且url中包含svid这个字段
if (oSession.HostnameIs("sv1.map.qq.com") && oSession.uriContains("svid")){
// 将url保存到该文件中
var filename = "E:/test.txt";
var curDate = new Date();
var logContent = "[" + curDate.toLocaleString() + "] " + oSession.PathAndQuery + "\r\n";
var sw : System.IO.StreamWriter;
if (System.IO.File.Exists(filename)){
sw = System.IO.File.AppendText(filename);
sw.Write(logContent);
}
else{
sw = System.IO.File.CreateText(filename);
sw.Write(logContent);
}
sw.Close();
sw.Dispose();
}
插入到OnBeforeRequest
这个函数里面就可以了,如下图
在这里插入图片描述使用ctrl+s进行保存。如果听到一阵提示音就说明保存成功。
接下来再到街景页面进行手动点击,一段时间后就可以看到数据在不断地保存到test.txt的文件中~
接着再去写个python脚本提取每一行的svid就可以调用接口获取街景数据了。