python 知乎登录_python3模拟知乎登录
代码github地址:zhihu
首先分析知乎登录页,一般模拟登录走的都是手机页,比较方便
分析登录过程
为了得到验证码我特意都输错了几次密码,知乎的登录不一定有验证码,所以我们在代码实现的过程中需要做判断是否需要验证码
引入依赖:
from urllib import request,parse
from bs4 import BeautifulSoup
import http.cookiejar
import json
import random
import time
import configparser
构建全局请求头
因为要模拟手机,所以这里我们用的是手机的user-Agent
def build_opener():
cookie = http.cookiejar.CookieJar()
cookie_processor = request.HTTPCookieProcessor(cookie)
opener = request.build_opener(cookie_processor)
opener.addheaders = [("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"),
("Referer", "https://www.zhihu.com/"),
("Origin", "https://www.zhihu.com/"),
("Host", "www.zhihu.com")]
request.install_opener(opener)
登录过程
def login(code=0):
login_data = configparser.ConfigParser()
login_data.read("user.ini") #将用户名密码放在user.ini配置文件
username = login_data.get("LoginInfo", "email")
password = login_data.get("LoginInfo", "password")
url = 'https://www.zhihu.com/signin'
login_url = 'https://www.zhihu.com/login/email'
captcha_url = 'https://www.zhihu.com/captcha.gif'
req = request.Request(url)
res = request.urlopen(req)
html = res.read().decode('utf-8')
soup = BeautifulSoup(html)
inputs = soup.find_all('input')
_xsrf = inputs[0]['value']
# 构造登录参数
params = {
'email': username,
'password': password,
'_xsrf': _xsrf
}
#如果code是1,说明需要验证码,读取验证码并写入到本地,然后手动输入验证码
if code == 1:
cap_parms = parse.urlencode({"r": time.time(), "type": "login"}).encode('utf-8')
captcha_req = request.Request(captcha_url,cap_parms,method="GET")
captcha_res = request.urlopen(captcha_req)
fo = open('captcha.jpg','wb+')
fo.write(captcha_res.read())
fo.close()
captcha = input("请输入验证码:\n")
params['captcha'] = captcha
params = parse.urlencode(params).encode('utf-8')
req = request.Request(login_url,params,method="POST")
res = request.urlopen(req)
result = res.read().decode('utf-8')
login_result = json.loads(result)
if login_result['r'] == 0:
print('登陆成功')
else:
if login_result['errcode'] == 1991829:
login(1)
else:
print(login_result['msg'])
login()
最后
if __name__ == '__main__':
build_opener()
login()
实例效果
zhihu.gif
python 知乎登录_python3模拟知乎登录相关推荐
- python博客园_python3 模拟博客园登录
'''作业题目: 模拟博客园登录 作业需求: 1),启动程序,首页面应该显示成如下格式: 欢迎来到博客园首页 1:请登录 2:请注册 3:文章页面 4:日记页面 5:评论页面 6:收藏页面 7:注销 ...
- python使用ssh 中文_Python3制作简易SSH登录工具
下载W3Cschool手机App,0基础随时随地学编程>>戳此了解 导语 做这个的起因大概是: 电脑里的Xshell不知道为啥突然显示"评估期已过"之类的提示... 记 ...
- python post请求实例_Python3模拟curl发送post请求操作示例
本文实例讲述了Python3模拟curl发送post请求操作.分享给大家供大家参考,具体如下: 后端给的接口样式: curl "http://65.33.44.43:509/pre/upda ...
- python课设总结_Python技术分享课总结:用Python模拟知乎自动登录
原标题:Python技术分享课总结:用Python模拟知乎自动登录 Python语言是由Guido van Rossum大牛在1989年发明,它是当今世界最受欢迎的计算机编程语言之一,也是一门&quo ...
- python爬虫登录教程_Python爬虫之模拟知乎登录的方法教程
前言 对于经常写爬虫的大家都知道,有些页面在登录之前是被禁止抓取的,比如知乎的话题页面就要求用户登录才能访问,而 "登录" 离不开 HTTP 中的 Cookie 技术. 登录原理 ...
- 知乎python储存_模拟知乎登录——Python3
经常写爬虫的都知道,有些页面在登录之前是被禁止抓取的,比如知乎的话题页面就要求用户登录才能访问,而 "登录" 离不开 HTTP 中的 Cookie 技术. 登录原理 Cookie ...
- python爬虫模拟与思考_Python爬虫之模拟知乎登录
昨天受邀在 CSDN 微信群做了一次 Python 技术分享,主题是<用Python模拟知乎登录>,效果非常不错,发现越来越多的人加入到了 Python 阵容中. 经常写爬虫的都知道,有些 ...
- 学习笔记 -- 用python中的selenium模拟知乎登录
文章目录 前言 一.模拟知乎登录的准备 二.登录验证码的问题 1.英文验证码 2.中文倒立文字验证码 三.完整代码如下 四.总结 前言 最近在学习python爬虫,为了巩固爬虫的知识,偶尔会写一些简单 ...
- Python爬虫教程,slenium模拟登陆知乎2020
文章目录 引言 登录成功 解决方案 意外收获 参考资料 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如 ...
最新文章
- 1035 Password
- qsort函数的用法
- 结对开发——环形一维数组求最大子数组和
- 如何用Postman做接口测试
- LeetCode 1799. N 次操作后的最大分数和(回溯 / 状态压缩DP)
- 霸榜 | 微软CV模型收获近 2k star
- hdu 5172 GTY's gay friends(线段树最值)
- DOM概述 选取文档元素 1
- java对象描述开车_java面向对象
- HoloLens1开发(二):结合Vuforia开发
- python中数据存入execle、读取excel数据
- 原创|批处理实现安卓手机一键快速截屏
- 高拍仪Twain接口功能
- 金融量化分析基础(二)—— 套利
- python多线程网易云歌单
- jQuery悬浮QQ客服插件
- mae python实现_使用Python进行机器学习:从0到1,构建回归模型(附完整教程)
- 电池上的PHP是什么,一次电池与二次电池的区别是什么?
- 数据科学系列:plotly可视化入门介绍
- vue中mapGetters函数前面的三个点是什么意思?
热门文章
- This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open this
- 天气预报js调用代码(QQ,新浪,265)
- matlab 3维 数据拟合,利用matlab将三维数据拟合成三维曲线
- MATLAB的基本知识
- Shell 脚本之流程控制
- css div网页布局代码 自适应,css+div页面布局之1 -- 自适应
- 关于iview弹窗组件的问题
- Vant Weapp 0.5.5 发布,有赞小程序 UI 组件库
- 使用webWorker执行后台任务
- android自定义本地邮箱联想组件(基于MultiAutoCompleteTextView)