


import requests
from PIL import Image
from fake_useragent import UserAgent
from urllib3.exceptions import InsecureRequestWarning
import urllib3
import json
urllib3.disable_warnings(InsecureRequestWarning)
def login():
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36"
}
session = requests.session()
img_url = 'https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand'
resp_img = session.get(img_url, headers=headers, verify=False)
with open("yzm.png", "wb") as f:
f.write(resp_img.content)
a = Image.open("yzm.png")
a.show()
a.close()
solution = input("请输入图片对应的号码,多张图片以,号隔开:")
yzh_list = solution.split(",")
zb_list = ['45,45', '119,49', '188,45', '269,42', '46,121', '101,120', '187,113', '259,112']
zb_list1 = []
for i in yzh_list:
zb_list1.append(zb_list[int(i) - 1])
yzm_1 = ",".join(zb_list1)
yz_url = 'https://kyfw.12306.cn/passport/captcha/captcha-check'
parameters = {
'answer': yzm_1,
'login_site': 'E',
'rand': 'sjrand'
}
resp_check = session.get(yz_url, headers=headers, params=parameters, verify=False)
code = json.loads(resp_check.text)
# print(code)
if code['result_code'] == '4':
print("验证码校验成功")
login_url = 'https://kyfw.12306.cn/passport/web/login'
formdate = {
"username": "143049962@qq.com",
"password": "130342Abc",
"appid": "otn"
}
resp_login = session.post(login_url, headers=headers, data=formdate, verify=False)
code = json.loads(resp_login.content)
if __name__ == '__main__':
login()
老师,我用网页登录12306,使用fiddler抓包可以得到json的响应信息,但是在pycharm中却不能用loads转换,帮忙看看是啥原因