吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4393|回复: 8
收起左侧

[Python 转载] 爬虫作品分享---渣渣网站模拟登录并改密

[复制链接]
zqc8 发表于 2019-10-7 16:24
本帖最后由 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()

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

jidesheng6 发表于 2019-10-7 16:54
厉害,膜拜大佬
xbfgzs 发表于 2019-10-7 19:03
神器 发表于 2019-10-7 19:07
yth492300648 发表于 2019-10-8 10:04
fromhash应该可以用bs4获取把
 楼主| zqc8 发表于 2019-10-8 17:53
yth492300648 发表于 2019-10-8 10:04
fromhash应该可以用bs4获取把

这个我没注意看,不知道他放在啥地方。
mikeee 发表于 2019-10-10 12:57
import re
import requests
formhash = re.search(r'(?<=value=")[A-Z\d]+', requests.get('https://www.yaozh.com/login').text).group()
# 例如: '4EE9E4331F'
 楼主| zqc8 发表于 2019-10-11 16:38
mikeee 发表于 2019-10-10 12:57
import re
import requests
formhash = re.search(r'(?

谢谢,我去改改!
 楼主| zqc8 发表于 2019-10-12 19:16
神器 发表于 2019-10-7 19:07
我也学python可还是看不懂,大神牛逼

其实我这个代码也没有什么难的地方,上网站实际分析下你就知道了。难的也就主要是大网站,所以那些网站目前我还是分析不来。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-16 12:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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