如何获取微信小程序的token
导入库
import re
import requests
import time
分析总结
re
: 用于正则表达式操作。requests
: 用于发送HTTP请求。time
: 用于时间处理和暂停功能。- 创建会话对象
-
ss = requests.session()
- 创建一个会话对象
ss
,可以跨多个请求保持会话信息(如cookies)。 -
定义函数func
-
def func():
url = 'https://mp.weixin.qq.com/cgi-bin/plugindetails?action=intro&pluginid=10058&token=2006370724&lang=zh_CN'
headers = {
'Host': 'mp.weixin.qq.com',
'Cache-Control': 'max-age=0',
'sec-ch-ua': '"Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"',
'sec-ch-ua-mobile': '?0',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-User': '?1',
'Sec-Fetch-Dest': 'document',
'Referer': 'https://mp.weixin.qq.com/cgi-bin/plugincenter?action=new&token=2006370724&lang=zh_CN',
'Cookie': 'ua_id=U1WC8gWuFcizmxBHAAAAACY9LYAkAqsqYwjuSdPWTgQ=; mm_lang=zh_CN; wxuin=01389730423702; pgv_pvi=3289152512; pgv_pvid=6366917664; RK=KYit10UjFV; ptcz=bfc1245724f16df52251e62060241e0bbee49e27ca929151aabe06a26b288bad; tvfe_boss_uuid=29caf641ac2aed21; iip=0; sd_userid=67261618842400782; sd_cookie_crttime=1618842400782; pac_uid=1_228703575; o_cookie=2216928453; webwx_data_ticket=gSeeb7YaAyjTkF9jRHmCBTch; pgv_info=ssid=s266260444; uuid=0240fce938d3cc13003499f8a1103ec1; rand_info=CAESIJlqHtWK/8Ye51g3ZSywHyKaNso6CWBrVde51N+69tB3; slave_bizuin=3213362691; data_bizuin=3213362691; bizuin=3213362691; data_ticket=tlldLFLhbHms/s8CT/+9xroJScypEj1cisalsoawolwvXvaeRzFFLbY6mpCq15ei; slave_sid=N1pGNF9tc1M5NmxSejU0S1Z3akNKd3N1Q2kxSGdvbzZaSHFPSEVZbTlQenhEWUpfTFFKYlZCcnhHMnowZUNJVjk5cjhNNFl6Q0M1eURvQnk1T2NITFFsRGlicWx6NWFZZWZ6eXdJTUpLb3g3aGpZeTQweGNZVFU0TlRkSkE3S1Q1VHdQUGZSazNScUk3enlX; slave_user=gh_5b5440cc7bff; xid=25f3ea9813d08ed63ab24e923203d7a8; sig=h01097b68480e2246ccc348b2786a9397044deac7c9f9268a9ce36231870f151b08905d06a69eacf286',
}
r = ss.get(url=url, headers=headers)
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + "---" + re.findall(r'"&token=(.*?)"', r.text)[0]
url
:请求的目标URL,指向微信公众平台的插件详情页面。headers
:包含模拟浏览器请求的头信息以及cookie。cookie中包含了登录信息。r = ss.get(url=url, headers=headers)
:使用会话对象ss
发送GET请求到指定URL,并获取响应对象r
。- 正则表达式解析:使用正则表达式从响应文本中提取
token
值,格式为"&token=(.*?)"
。提取的第一个匹配项是token值。 - 返回值:函数返回当前时间和提取的token,格式为“时间---token”。
-
主循环
-
while 1:
print(func())
time.sleep(10)
- 无限循环:不断调用
func()
函数并打印其返回值。 - 暂停:每次调用
func()
后暂停10秒,以避免频繁请求。 - 功能:这段代码通过发送请求到微信公众平台的插件详情页面,提取并打印token值,附带当前时间。
- 请求头和cookie:
- 请求头模拟了浏览器的行为,包含了必要的头信息。
- cookie包含了登录微信公众平台的信息,这对于成功请求页面并提取token至关重要。
- 正则表达式:
- 使用正则表达式从响应文本中提取token值。正则表达式
"&token=(.*?)"
用于匹配token的值。
- 无限循环:
- 代码在无限循环中每隔10秒钟调用一次
func()
函数,并打印结果。这可以用于监控token的变化或调试其他与token相关的功能。
改进建议
- 错误处理:
- 增加对HTTP请求的错误处理,如超时、请求失败等。
- 增加对正则匹配失败的处理,防止因匹配不到token而引发的索引错误。
- cookie管理:
- 硬编码的cookie在实际应用中不太实用,应该通过登录接口动态获取并更新cookie。
- 请求频率:
- 考虑调整请求频率,以避免被目标服务器检测到并封禁。
- 日志记录:
- 可以增加日志记录功能,记录每次请求的结果和状态,方便后续分析和调试。
-
import re,requests,time
ss = requests.session()
def func():
url = 'https://mp.weixin.qq.com/cgi-bin/plugindetails?action=intro&pluginid=10058&token=2006370724&lang=zh_CN'
headers = {
'Host': 'mp.weixin.qq.com',
'Cache-Control': 'max-age=0',
'sec-ch-ua': '"Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"',
'sec-ch-ua-mobile': '?0',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-User': '?1',
'Sec-Fetch-Dest': 'document',
'Referer': 'https://mp.weixin.qq.com/cgi-bin/plugincenter?action=new&token=2006370724&lang=zh_CN',
'Cookie': 'ua_id=U1WC8gWuFcizmxBHAAAAACY9LYAkAqsqYwjuSdPWTgQ=; mm_lang=zh_CN; wxuin=01389730423702; pgv_pvi=3289152512; pgv_pvid=6366917664; RK=KYit10UjFV; ptcz=bfc1245724f16df52251e62060241e0bbee49e27ca929151aabe06a26b288bad; tvfe_boss_uuid=29caf641ac2aed21; iip=0; sd_userid=67261618842400782; sd_cookie_crttime=1618842400782; pac_uid=1_228703575; o_cookie=2216928453; webwx_data_ticket=gSeeb7YaAyjTkF9jRHmCBTch; pgv_info=ssid=s266260444; uuid=0240fce938d3cc13003499f8a1103ec1; rand_info=CAESIJlqHtWK/8Ye51g3ZSywHyKaNso6CWBrVde51N+69tB3; slave_bizuin=3213362691; data_bizuin=3213362691; bizuin=3213362691; data_ticket=tlldLFLhbHms/s8CT/+9xroJScypEj1cisalsoawolwvXvaeRzFFLbY6mpCq15ei; slave_sid=N1pGNF9tc1M5NmxSejU0S1Z3akNKd3N1Q2kxSGdvbzZaSHFPSEVZbTlQenhEWUpfTFFKYlZCcnhHMnowZUNJVjk5cjhNNFl6Q0M1eURvQnk1T2NITFFsRGlicWx6NWFZZWZ6eXdJTUpLb3g3aGpZeTQweGNZVFU0TlRkSkE3S1Q1VHdQUGZSazNScUk3enlX; slave_user=gh_5b5440cc7bff; xid=25f3ea9813d08ed63ab24e923203d7a8; sig=h01097b68480e2246ccc348b2786a9397044deac7c9f9268a9ce36231870f151b08905d06a69eacf286',
}
r = ss.get(url=url, headers=headers)
#print(r.text)
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + "---"+re.findall(r'"&token=(.*?)"',r.text)[0]
while 1:
print(func())
time.sleep(10)