分析到此我们便可构造参数来编写自定义微信小程序搜索的脚本,其Python程序源码如下: ```python #!/usr/bin/env python # -*- encoding: utf-8 -*- import requests,json,sys def Get_Apps(query,number,cookie): headers={"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.11(0x17000b21) NetType/WIFI Language/fr"} url = "https://mp.weixin.qq.com/wxa-cgi/innersearch/subsearch" params = "query=" + query + "&cookie=" + cookie + '&subsys_type=1&offset_buf={"page_param":[{"subsys_type":1,"server_offset":0,"server_limit":' + str(int(number)+30) + ',"index_step":' + number + ',"index_offset":0}],"client_offset":0,"client_limit":' + number + '}' response = requests.post(url=url, params=params, headers=headers).text Apps_Json = json.loads(response) App_Items = Apps_Json['respBody']['items'] for App_Item in App_Items: App_Item_Json = json.loads(json.dumps(App_Item)) #重新加载嵌套内容中的json数据 App_Id = App_Item_Json['appid'] App_Name = App_Item_Json['nickName'] App_Id_List.append(App_Id) App_Name_List.append(App_Name) if __name__ == '__main__': reload(sys) sys.setdefaultencoding('utf-8') #解决编码问题 query = raw_input("请输入要搜的微信小程序名称: ") number = raw_input("请指定要返回的小程序的数量: ") cookie = raw_input("请输入你获取到的Cookie信息: ") App_Id_List = [] App_Name_List = [] try: Get_Apps(query,number,cookie) print "返回的小程序名: " + ",".join(App_Name_List) print "返回的小程序ID: " + ",".join(App_Id_List) except: print "信息获取失败,请检查!" ``` 那么接下来我们便要开始写微信小程序网络接口的批量提取脚本,但这边有一个小细节需要注意,此接口的访问频率有一定的限制,每访问一次需要将程序“休眠”数秒再进行下一次访问,若触发其访问频率限制则会提示“访问频繁,请稍后再试”,并会对你当前身份封锁15分钟左右。最后完成的Python源码如下: ```Python #!/usr/bin/env python # -*- encoding: utf-8 -*- import requests,time def Get_Domain(X_APP_ID,X_WECHAT_KEY,X_WECHAT_UIN): headers={ "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.11(0x17000b21) NetType/WIFI Language/fr", "X-WECHAT-KEY": X_WECHAT_KEY, "X-WECHAT-UIN": X_WECHAT_UIN #微信两个校验值 } url = "https://mp.weixin.qq.com/mp/waverifyinfo" params = "action=get&wx_header=1&appid=" + X_APP_ID response = requests.get(url=url, params=params, headers=headers).text Response_domain_list = Get_MiddleStr(response,"request_domain_list","request_domain_list.splice") Response_domain_list = Get_MiddleStr(Response_domain_list,"= ",";") exec("Domain_list.extend(" + Response_domain_list + ")") #添加list数组 time.sleep(8) #防止访问频繁,自己调节 def Get_MiddleStr(content,startStr,endStr): #获取中间字符串的一个通用函数 startIndex = content.index(startStr) if startIndex>=0: startIndex += len(startStr) endIndex = content.index(endStr) return content[startIndex:endIndex] if __name__ == '__main__': X_APP_IDS = raw_input("请输入小程序ID(逗号分隔): ") X_WECHAT_UIN = raw_input("请输入自己的X-WECHAT-UIN: ") X_WECHAT_KEY = raw_input("请输入自己的X-WECHAT-KEY: ") X_APPID_LIST = X_APP_IDS.split(",") Domain_list = [] for X_APP_ID in X_APPID_LIST: try: Get_Domain(X_APP_ID,X_WECHAT_KEY,X_WECHAT_UIN) except: print X_APP_ID + "的信息获取失败,请检查!" Domain_list = list(set(Domain_list)) #list数组去重 Domain_list = filter(None,Domain_list) #list数组去空 print "收集到的域名: " + str(Domain_list) ```