用python实现下载必应壁纸并自动更换壁纸的功能
动机
Windows下的必应桌面(Bing Desktop)提供了质量非常高的壁纸,但是集成了太多无用的功能,同时还有一些让人恼火的bug。鉴于这种情况,我决定自己动手实现一个纯净版的必应桌面,只有自动下载和更换壁纸的功能,包括GUI等等在内烦人的东西一概没有。
数据包分析
首先要搞清楚必应这些图片是从哪里下载的,有没有身份验证等等。于是我用wireshark对必应桌面客户端的网络通信进行了分析。
观察之后,我发现在我进行统计的时间内,我的电脑总共跟15个服务器进行了通信。结合对必应桌面的了解,下载的内容应该包括两部分:图片和对应的xml文件。我的电脑上xml文件的总大小为150k左右,找到通信数据量为150k左右的服务器,这就是必应下载图片信息的服务器。用同样的方法可以找到下载图片的服务器。
简单观察一下通信内容就可以发现,必应桌面的逻辑非常简单:首先从记录图片信息的服务器A查询可供下载的图片信息,在电脑上保存为xml格式的文件;随后根据每个xml提供的信息从图片服务器B上下载对应的图片。
查询图片信息的url为: