鱼C论坛

 找回密码
 立即注册
查看: 1194|回复: 2

[已解决]关于requests.session使用问题

[复制链接]
发表于 2022-5-14 17:07:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一下是我的代码。我想使用requests的session功能模拟登录明日科技网页里的个人主页,但我不知道我这段代码哪里出问题了始终无法成功。哪位老师能帮我看看万分感谢。
# coding=utf-8
import requests
from lxml import etree
session = requests.Session()
url = 'https://passport.mingrisoft.com/login/index.html?tpl=sch'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36'}
post_url = 'https://passport.mingrisoft.com/Login/checkLogin'
post_headers = {
'Host': 'passport.mingrisoft.com',
'Origin': 'https://passport.mingrisoft.com',
'Referer': 'https://passport.mingrisoft.com/login/index.html?tpl=sch',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36'
}
html_str = requests.get(url,headers=headers,verify=False).content.decode()
html = etree.HTML(html_str)
img_src ='https://passport.mingrisoft.com'+ html.xpath('//*[@id="imgcode"]/@src')[0]
img_str = requests.get(img_src,headers=headers,verify=False).content
with open('yanzhengma.jpg','wb') as f:
    yanzheng_jpg = f.write(img_str)
data = {
'username': '账号',
'password': '密码',
'code': input('输入验证码'),
'rempwd': 'true'
}
s_headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36',
'Host': 'www.mingrisoft.com',
'Referer': 'https://passport.mingrisoft.com/'
             }
session.post(post_url,data=data,headers=post_headers,verify=False)
res1 = session.get('https://www.mingrisoft.com/',headers=s_headers,verify=False).content.decode()
print(res1)
最佳答案
2022-5-14 22:40:35
本帖最后由 suchocolate 于 2022-5-14 22:42 编辑

session如果使用的话,要贯穿始终,比如这样:
# coding=utf-8
import requests
import time


def main():
    url = 'https://passport.mingrisoft.com/login/index.html?tpl=sch'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) '
                      'AppleWebKit/537.36 (KHTML, like Gecko) '
                      'Chrome/101.0.4951.41 Safari/537.36'}
    s = requests.Session()
    s.get(url, headers=headers, verify=False)  # 先访问一下,让session获取到cookie
    time.sleep(3)
    r = s.get('https://passport.mingrisoft.com/captcha.html', verify=False)  # 再次发起访问,获取验证码图片
    with open('code.png', 'wb') as f:  # 保存图片,人工打开图片,看看内容,然后在下面输入
        f.write(r.content)
        f.close()
    code = input('请输入验证码:')
    data = {
        'username': '账号',
        'password': '密码',  # 看过了,密码是经过加密,加密方式还不清楚。
        'code': code,
        'rempwd': 'true'
    }
    r = s.post('https://passport.mingrisoft.com/Login/checkLogin', data=data, verify=False)  # 正式登陆
    print(r.status_code)
    with open('r.txt', 'w') as f:
        f.write(r.text)


if __name__ == "__main__":
    main()
f12看过了网站,网站不接受明文密码,只接受加密的密码,加密方式需要研究一下网页的加密逻辑。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-14 22:40:35 | 显示全部楼层    本楼为最佳答案   
本帖最后由 suchocolate 于 2022-5-14 22:42 编辑

session如果使用的话,要贯穿始终,比如这样:
# coding=utf-8
import requests
import time


def main():
    url = 'https://passport.mingrisoft.com/login/index.html?tpl=sch'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) '
                      'AppleWebKit/537.36 (KHTML, like Gecko) '
                      'Chrome/101.0.4951.41 Safari/537.36'}
    s = requests.Session()
    s.get(url, headers=headers, verify=False)  # 先访问一下,让session获取到cookie
    time.sleep(3)
    r = s.get('https://passport.mingrisoft.com/captcha.html', verify=False)  # 再次发起访问,获取验证码图片
    with open('code.png', 'wb') as f:  # 保存图片,人工打开图片,看看内容,然后在下面输入
        f.write(r.content)
        f.close()
    code = input('请输入验证码:')
    data = {
        'username': '账号',
        'password': '密码',  # 看过了,密码是经过加密,加密方式还不清楚。
        'code': code,
        'rempwd': 'true'
    }
    r = s.post('https://passport.mingrisoft.com/Login/checkLogin', data=data, verify=False)  # 正式登陆
    print(r.status_code)
    with open('r.txt', 'w') as f:
        f.write(r.text)


if __name__ == "__main__":
    main()
f12看过了网站,网站不接受明文密码,只接受加密的密码,加密方式需要研究一下网页的加密逻辑。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
redaiconglin + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-14 23:18:07 | 显示全部楼层
suchocolate 发表于 2022-5-14 22:40
session如果使用的话,要贯穿始终,比如这样:
f12看过了网站,网站不接受明文密码,只接受加密的密码,加 ...

感谢老师的讲解。就是这个问题。要贯穿始终。谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 08:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表