import requests
import time
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# 验证码的url地址
new_time = time.time() * 1000
image_url = "https://passport.tuniu.com/ajax/captcha/v/%s" % (new_time)
image_headers = {
'Host': 'passport.tuniu.com',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36',
'sec-ch-ua-platform': '"Windows"',
'accept': 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'no-cors',
'sec-fetch-dest': 'image',
'referer': 'https://passport.tuniu.com/login?origin=https://www.tuniu.com/ssoConnect',
'accept-language': 'zh-CN,zh;q=0.9'
}
# 定义一个session对象
req = requests.Session()
#通过这个对象调用get请求,响应获取cooki并保存验证码图片
cvalcod=req.get(image_url,headers=image_headers,verify=False)
f=open('验证码.jpg','wb') # 以字节流形式写入并保存
f.write(cvalcod.content)
f.flush()
f.close()
# 等待2秒
time.sleep(2)
# 登录请求的地址
login_url = "https://passport.tuniu.com/login?origin=https://www.tuniu.com/ssoConnect"
# 登录后的首页地址
url = 'https://i.tuniu.com/'
# 请求头
headers = {
'Host': 'passport.tuniu.com',
'cache-control': 'max-age=0',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'upgrade-insecure-requests': '1',
'origin': 'https://passport.tuniu.com',
'content-type': 'application/x-www-form-urlencoded',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 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://passport.tuniu.com/login?origin=https://www.tuniu.com/ssoConnect',
'accept-language': 'zh-CN,zh;q=0.9'
}
# 输入你的手机号,密码,验证码
tel=int(input('请输入手机号'))
password=input('请输入密码')
identify_code=input('请输入验证码')
data={
'isWeak': 0,
'login_type': 'P-N',
'intlCode': '',
'username': tel,
'password': 'password',
'identify_code': identify_code
}
# 发起登录请求
res = req.post(url=login_url, headers=headers, data=data, verify=False)
# print(res.content.decode('utf-8'))
html=req.get(url,verify=False)
print(html.content.decode())
为什么打印的是登录页面的html,而不是登录后首页的html
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 陈年椰子 2021-12-23 10:55关注
应该是自动登录没成功吧。 验证码输入错误, 页面有提示码?
print(res.content.decode('utf-8')
这个内容是啥?本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
- ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
- ¥200 C++表格文件处理-悬赏
- ¥15 Windows Server2016本地登录失败
- ¥15 复合卡卡号轨道写入芯片卡
- ¥20 基于MATLAB的TDOA
- ¥15 为啥输入字体突然变了
- ¥20 已知坐标,换成MATLAB可以用的数据
- ¥15 这个python五子棋代码的每一句意思是什么啊
- ¥15 求一段隐藏代码,隐藏一些内容