环境准备
目录
关于微信小程序downloadFile合法域名的问题和解决方案
1. 安装 Node.js
Node.js官网下载并安装。
然后开始无脑下一步,安装完成后检查一下环境

2. 安装 HBuilderX,
官网下载,他是免安装的,下载完成后解压到你喜欢的路径
3 安装微信小程序开发工具
然后打开HBuilderX 在工具中配置微信开发工具的路径,用于发布,跟小程序调试运行
导入代码
代码地址
https://download.youkuaiyun.com/download/hello_Lonewolf/90556615
功能介绍
1: 支持 dy, 某书, 某博 某右 等视频解析
2: 支持页面分享
3: 每日随机小姐姐视频素材获取
4: 前端微信登录功能
运行步骤
1: 导入代码到HBuilderX
2: 需要修改你的微信appID
如何获取appid?通过微信公众平台获取,在电脑端打开微信公众平台,获取,详情可以百度图片教程
3: 运行到微信小程序模拟机, 记得在工具中配置微信开发工具的路径
最终成果
每日素材视频需要登录才能看到视频,微信小程序个人发布,不允许有视频类,所以要隐藏
体验地址
关于微信小程序downloadFile合法域名的问题和解决方案
dy因为有二级动态域名的缘故,在解析视频时会重定向到它的动态二级域名,但是在微信小程序上面在下载的链接必须配置合法的域名, 所以会出现{errno:680002, errMsg: "downloadFile:fail url not in domain list"}目前个人主要两个解决方法,有其他好的方法 欢迎讨论以下
- 通过抓包批量获取他的动态域名,但是有限,且微信小程序downloadFile合法域名配置上限是200个,所以并不能保证每个视频都能正常解析,有后台的情况下,可以保存没有配置的域名进行统计,后面在更新, 微信小程序好像是不支持这个动态更新的
- 由前端发给后端中转下载在发给前端,优点时服务稳定,几乎能保证每个视频都能正常解析,缺点是需要服务后台,且在大量长时间视频解析时耗时比较久,也废流量,以下是一个中转下载的接口例子
-
import requests from flask import Flask, request, jsonify, Response app = Flask(__name__) @app.route('/video', methods=['GET', 'POST']) def proxy(): print("获取请求") # 记录请求信息 client_ip = request.remote_addr user_agent = request.headers.get('User-Agent', 'No User Agent') print(f'Request from IP: {client_ip}, User Agent: {user_agent}', ) # 检查URL参数 url = request.args.get('url') if not url: return jsonify({'error': 'URL parameter is required'}), 400 print(f'Processing URL: {url}') # 发送HEAD请求获取头信息 head_response = requests.head(url, allow_redirects=True, timeout=10) head_response.raise_for_status() # 记录响应信息 print(f'Response HTTP Code: {head_response.status_code}') print(f'Response Headers: {head_response.headers}', ) # 发送GET请求获取完整内容 get_response = requests.get(url, stream=True, timeout=30) get_response.raise_for_status() # 设置CORS头 response_headers = { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET', 'Access-Control-Allow-Headers': 'Content-Type' } # 创建响应对象 response = Response( get_response.iter_content(chunk_size=8192), content_type=get_response.headers.get('Content-Type', 'application/octet-stream'), headers=response_headers ) print(f'Download completed successfully for URL: {url}, Total Size: {total_size} bytes') return response