首页 编程教程正文

爬虫作品分享---渣渣网站模拟登录并改密

piaodoo 编程教程 2020-02-22 22:08:18 961 0 python教程

本文来源吾爱破解论坛

本帖最后由 zqc8 于 2019-10-12 19:13 编辑

本人是新手渣渣一枚,是第一次发帖,大佬路过别喷,欢迎大家帮我看看代码有什么地方可以改进优化的。本人学习爬虫也算有些时间了(也就一个月了左右),目前正在学习模拟登录,最近爬了个药智网(技术有限也就只能爬这种渣渣小网站了),现将代码分享给大家。

2019.10.12日更新:
1:自动抓取formhash值,不用手动查看了。
2:优化代码,去掉部分冗杂的成分。

代码全文如下:
[Python] 纯文本查看 复制代码

#测试网址:https://www.yaozh.com/
#测试账号:qq896944660
#初始密码:123456
#请各位同胞手下留情,玩耍完之后请将密码更改为初始密码,以便以下一位同胞也能地愉快玩耍!!!!

import requests,re

#抓取formhash值(登录表单需要)
def get_formhash(login_url,headers):
        html = requests.get(login_url,headers=headers).text
        p_formhash = r'id="formhash" value="(.+)">'
        formhash = re.findall(p_formhash,html)[0]
        
        return formhash


#登录与改密
def change_password(login_url,test_url,change_url,headers,formhash):
        #创建会话以保持登录状态
        session = requests.session()

        name = input("请输入登录账号:")
        password_prompt = "请输入登录密码:"   #密码提示语
        while True:
                password = input(password_prompt)
                #登录账号所需要传输的数据
                form_data = {}
                form_data["username"] = name
                form_data["pwd"] = password
                form_data["formhash"]= formhash
                form_data["backurl"] = "https%3A%2F%2Fwww.yaozh.com%2F"

                login_response = session.post(login_url,headers=headers,data=form_data)
                test_response = session.get(test_url,headers=headers)  #test_response 用于验证是否登录成功。

                #验证是否登录成功
                if name in test_response.text:
                        print("登录成功")
                        while True:
                                new_password = input("请输入新的登录密码:")
                                re_password = input("请再次输入新的登录密码:")
                                if new_password != re_password:
                                        print("两次密码输入结果不一致,请重新输入!")
                                        continue
                                else:
                                        break
                        #修改密码所所需要提交的数据。
                        change_password_data = {}
                        change_password_data["nowpassword"] =password
                        change_password_data["password"] = new_password
                        change_password_data["repassword"] = re_password
                        change_password_data["issub"] = 1
                        change_response = session.post(change_url,headers=headers,data=change_password_data)
                        print("改密成功")
                        break
                else:
                        password_prompt = ("登录失败,请重新输入登录密码:")
                        continue


def main():
        login_url = "https://www.yaozh.com/login"
        test_url  = "https://www.yaozh.com/member/"
        change_url = "https://www.yaozh.com/member/uppwd/"
        
        headers = {}
        headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
        
        formhash = get_formhash(login_url,headers)
        change_password(login_url,test_url,change_url,headers,formhash)


if __name__ == "__main__":
        main()
本帖被以下淘专辑推荐: · 源码系列|主题: 31, 订阅: 8

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7651.html

搜索