通过 Charles 抓包分析了医院的 App 的请求,然后用 脚本模拟登录医院的 App 挂号,具体代码如下:
import requests
import json
import time
import datetime
from dateutil.relativedelta import relativedelta
# 登录获取session_id
def login(username,password):
url = "https://zyyy.zwjk.com/api/exec.htm"
data = {
"api_Channel":"1",
"client_version":"3.6.6",
"app_id":"zyyy_android",
"app_key":"xxxx",
"user_type":"0",
"client_mobile":"863008041030718",
"api_name":"api.user.user.login.info",
"params":{
"phone":username, # 账号
"psw":password}, # 密码
}
headers = {
'Content-Type': "application/x-www-form-urlencoded",
'User-Agent': "health",
'Host': "zyyy.zwjk.com",
'Connection': "Keep-Alive",
'Accept': "application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
'cache-control': "no-cache",
}
response = requests_session.post( url, data={
"requestData":json.dumps(data)}, headers=headers)
if response.status_code != 200:
return False
resp_json = response.json()
session_id = resp_json['return_params']['user_model']['session_id']
return session_id
# 获取挂号信息
def get_doctor_info(session_id,appointment_date):
url = "https://zyyy.zwjk.com/api/exec.htm"
payload = {
"api_Channel":"1",
"client_version":"3.6.6",
"app_id":"zyyy_android",
"app_key":"xxxx",