发现360浏览器自带壁纸有些还行,希望把它保存起来,但连个网址都没有,只能通过Fiddler抓包了。

抓包发现,主要API是http://cdn.apc.360.cn/index.php?c=WallPaper&a=getAllCategoriesV2&from=360chrome,进行get 操作并将结果进行unicode转码后的结果是

{
"errno": "0",
"errmsg": "正常",
"consume": "4",
"total": "18",
"data": [
{
"id": "36",
"name": "4K专区",
"order_num": "110",
"tag": "",
"create_time": "2015-12-08 13:50:44"
},
{
"id": "6",
"name": "美女模特",
"order_num": "100",
"tag": "",
"create_time": "2011-10-29 17:49:27"
},
{
"id": "30",
"name": "爱情美图",
"order_num": "99",
"tag": "",
"create_time": "2012-11-23 10:49:25"
},
{
"id": "9",
"name": "风景大片",
"order_num": "98",
"tag": "",
"create_time": "2011-11-02 16:33:34"
},
{
"id": "15",
"name": "小清新",
"order_num": "85",
"tag": "",
"create_time": "2011-12-15 18:47:03"
},
{
"id": "26",
"name": "动漫卡通",
"order_num": "84",
"tag": "",
"create_time": "2012-07-27 17:17:42"
},
{
"id": "11",
"name": "明星风尚",
"order_num": "83",
"tag": "",
"create_time": "2011-11-02 17:38:58"
},
{
"id": "14",
"name": "萌宠动物",
"order_num": "75",
"tag": "",
"create_time": "2011-12-15 18:23:27"
},
{
"id": "5",
"name": "游戏壁纸",
"order_num": "74",
"tag": "",
"create_time": "2011-10-29 17:49:12"
},
{
"id": "12",
"name": "汽车天下",
"order_num": "72",
"tag": "",
"create_time": "2011-12-13 18:59:40"
},
{
"id": "10",
"name": "炫酷时尚",
"order_num": "70",
"tag": "",
"create_time": "2011-11-02 17:10:53"
},
{
"id": "29",
"name": "月历壁纸",
"order_num": "69",
"tag": "",
"create_time": "2012-11-23 09:19:54"
},
{
"id": "7",
"name": "影视剧照",
"order_num": "68",
"tag": "",
"create_time": "2011-11-02 15:22:39"
},
{
"id": "13",
"name": "节日美图",
"order_num": "67",
"tag": "节日 端午 中秋 元旦 圣诞 清明 情人 春节 新年 2012",
"create_time": "2011-12-14 18:47:32"
},
{
"id": "22",
"name": "军事天地",
"order_num": "14",
"tag": "",
"create_time": "2012-05-29 15:10:04"
},
{
"id": "16",
"name": "劲爆体育",
"order_num": "12",
"tag": "",
"create_time": "2011-12-30 11:37:49"
},
{
"id": "18",
"name": "BABY秀",
"order_num": "10",
"tag": "",
"create_time": "2012-03-28 23:52:39"
},
{
"id": "35",
"name": "文字控",
"order_num": "9",
"tag": "",
"create_time": "2014-09-25 18:35:57"
}
]
}

ps:比较好奇其它ID是什么,经过测试,完整ID应该是:

{'36':'4K专区',
'6':'美女模特',
'30':'爱情美图',
'9':'风景大片',
'15':'小清新',
'26':'动漫卡通',
'11':'明星风尚',
'14':'萌宠动物',
'5':'游戏壁纸',
'12':'汽车天下',
'10':'炫酷时尚',
'29':'月历壁纸',
'7':'影视剧照',
'13':'节日美图',
'22':'军事天地',
'16':'劲爆体育',
'18':'BABY秀',
'35':'文字控',
'8':"可爱插画",
'17':'美食天下',
'27':'今日推荐',
'28':'新窝家居',
'31':'特供年货',
'32':'纹理',
'33':'歪脖小矛'
}

与截图对应,通过预览APIhttp://wallpaper.apc.360.cn/index.php?c=WallPaper&a=getAppsByCategory&cid=36&start=0&count=20&from=360chrome 获得链接信息,因此可以用python进行抓取:

# -*- coding: utf-8 -*-
"""
Created on Sun Dec 26 15:51:26 2021

@author: Mypc

http://cdn.apc.360.cn/index.php?c=WallPaper&a=getAllCategoriesV2&from=360chrome

"""
import requests,os,time,random


Type = 'url' #分辨率可选 url 、 img_1600_900 、 img_1440_900 、img_1366_768 、 img_1280_800 、 img_1280_1024 、 img_1024_768

# 生成长度为5的随机字母:
def random_char(y):
ascii_letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
return ''.join(random.choice(ascii_letters) for x in range(y))
headers = {
'Host': 'wallpaper.apc.360.cn',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 QIHU 360EE',
}
#ID与专区对应
floderData = {'36':'4K专区',
'6':'美女模特',
'30':'爱情美图',
'9':'风景大片',
'15':'小清新',
'26':'动漫卡通',
'11':'明星风尚',
'14':'萌宠动物',
'5':'游戏壁纸',
'12':'汽车天下',
'10':'炫酷时尚',
'29':'月历壁纸',
'7':'影视剧照',
'13':'节日美图',
'22':'军事天地',
'16':'劲爆体育',
'18':'BABY秀',
'35':'文字控',
'8':"可爱插画",
'17':'美食天下',
'27':'今日推荐',
'28':'新窝家居',
'31':'特供年货',
'32':'纹理',
'33':'歪脖小矛'
}

#创建文件夹
def mkdir(path):
folder = os.path.exists(path)
if not folder:
os.makedirs(path)
else:
pass


for ID in floderData:
folder = floderData[ID]
mkdir(folder)
try:
for i in range(10000):
time.sleep(10)
start = i*20
imageUrl = 'http://wallpaper.apc.360.cn/index.php?c=WallPaper&a=getAppsByCategory&cid=%s&start=%s&count=20&from=360chrome'%(ID,start)
RespJson = requests.get(imageUrl,headers=headers).json()
dataList = RespJson['data']
for data in dataList:
imageUrl = data[Type]
filename = imageUrl.split('/')[-1]
if len(filename) < 15:
filename = random_char(17) + '_' + filename
print(filename)
with open(folder + '/'+filename, 'wb') as f:
f.write(requests.get(imageUrl).content)
with open(folder + '/' + 'urlList.txt','a') as g:
g.write(imageUrl + '\n')
except:
continue

分辨率可选默认1600x9001440x9001366x7681280x8001280x10241024x768

运行后即可得到图片


图片及图片链接保存于https://yun.bizha.top/Onedrive/360wallpaper