Python3 模拟登录知乎(requests)
# -*- coding: utf-8 -*-
""" 知乎登录分为两种登录
一是手机登录 API : https://www.zhihu.com/login/phone_num
二是邮箱登录 API : https://www.zhihu.com/login/email
第一步、打开首页获取_xref值,验证图片
第二步、输入账号密码
第三步、看是否需要验证、要则下载验证码图片,手动输入
第四步、判断是否登录成功、登录成功后获取页面值。
requests 与 http.cookiejar 相结合使用
session = requests.session()
session.cookies = http.cookiejar.LWPCookies(filename='abc')
...
请求网址后
...
session.cookies.save() 保存cookies
加载cookies
try:
session.cookies.load(ignore_discard=True)
except:
print('没有cookies')
"""
import requests
from bs4 import BeautifulSoup as BS
import time
from subprocess import Popen # 打开图片
import http.cookiejar
import re
# 模拟浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36'
}
home_url = "https://www.zhihu.com"
base_login = "https://www.zhihu.com/#signin/" # 一定不能写成http,否则无法登录
session = requests.session()
session.cookies = http.cookiejar.LWPCookieJar(filename='ZhiHuCookies')
try:
# 加载Cookies文件
session.cookies.load(ignore_discard=True)
except:
print("cookie未保存或cookie已过期")
# 第一步 获取_xsrf
_xsrf = BS(session.get(home_url, headers=headers).text, "lxml").find("input", {"name": "_xsrf"})["value"]
# 第二步 根据账号判断登录方式
account = input("请输入您的账号:")
password = input("请输入您的密码:")
# 第三步 获取验证码图片
gifUrl = "http://www.zhihu.com/captcha.gif?r=" + str(int(time.time() * 1000)) + "&type=login"
gif = session.get(gifUrl, headers=headers)
# 保存图片
with open('code.gif', 'wb') as f:
f.write(gif.content)
# 打开图片
Popen('code.gif', shell=True)
# 输入验证码
captcha = input('captcha: ')
data = {
"captcha": captcha,
"password": password,
"_xsrf": _xsrf,
}
# 第四步 判断account类型是手机号还是邮箱
if re.match("^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$", account):
# 邮箱
data["email"] = account
base_login = base_login + "email"
else:
# 手机号
data["phone_num"] = account
base_login = base_login + "phone_num"
print(data)
# 第五步 登录
response = session.post(base_login, data=data, headers=headers)
print(response.content.decode("utf-8"))
# 第六步 保存cookie
session.cookies.save()
# 获取首页信息
resp = session.get(home_url, headers=headers, allow_redirects=False)
print(resp.content.decode("utf-8"))
Python3 模拟登录知乎(requests)的更多相关文章
- 【爬虫】python requests模拟登录知乎
需求:模拟登录知乎,因为知乎首页需要登录才可以查看,所以想爬知乎上的内容首先需要登录,那么问题来了,怎么用python进行模拟登录以及会遇到哪些问题? 前期准备: 环境:ubuntu,python2. ...
- requests_模拟登录知乎
如何登录知乎? 首先要分析,进行知乎验证的时候,知乎服务器需要我们提交什么数据,提交的地址.先进行几次登录尝试,通过浏览器中network中查看数据流得知,模拟登录知乎需要提供5个数据,分别是_xsr ...
- Python爬虫初学(三)—— 模拟登录知乎
模拟登录知乎 这几天在研究模拟登录, 以知乎 - 与世界分享你的知识.经验和见解为例.实现过程遇到不少疑问,借鉴了知乎xchaoinfo的代码,万分感激! 知乎登录分为邮箱登录和手机登录两种方式,通过 ...
- Python爬虫入门(基础实战)—— 模拟登录知乎
模拟登录知乎 这几天在研究模拟登录, 以知乎 - 与世界分享你的知识.经验和见解为例.实现过程遇到不少疑问,借鉴了知乎xchaoinfo的代码,万分感激! 知乎登录分为邮箱登录和手机登录两种方式,通过 ...
- 2020.10.20 利用POST请求模拟登录知乎
前两天学习了Python的requests模块的相关内容,对于用GET和PSOT请求访问网页以抓取需要的内容有了初步的了解,想要再从一些复杂的网站积累些经验.最开始我采用最简单的get(url)方法想 ...
- 利用scrapy模拟登录知乎
闲来无事,写一个模拟登录知乎的小demo. 分析网页发现:登录需要的手机号,密码,_xsrf参数,验证码 实现思路: 1.获取验证码 2.获取_xsrf 参数 3.携带参数,请求登录 验证码url : ...
- 使用selenium模拟登录知乎
网上流传着许多抓取知乎数据的代码,抓取它的数据有一个问题一定绕不过去,那就是模拟登录,今天我们就来聊聊知乎的模拟登录. 获取知乎内容的方法有两种,一种是使用request,想办法携带cookies等必 ...
- 2019年最新 Python 模拟登录知乎 支持验证码
知乎的登录页面已经改版多次,加强了身份验证,网络上大部分模拟登录均已失效,所以我重写了一份完整的,并实现了提交验证码 (包括中文验证码),本文我对分析过程和代码进行步骤分解,完整的代码请见末尾 Git ...
- python3 模拟登录网站
最近学习python,因经常登录公积金网站查看公积金缴存还款情况,so网上找了写脚本,修改了一下,方便获取网页中的数据. 使用谷歌浏览器F12查看登录请求内容 1.request header需要参数 ...
随机推荐
- 开源项目AndroidReview学习小结(2)
读书破万卷下笔如有神 作为入门级的android码农的我,还是需要多多研读开源代码 下面继续接着上一篇的分析,这一篇主要介绍第一个tab,ReviewFragment的分析,界面看起来简单,背后的逻辑 ...
- RHEL 6.9 udev 将lv绑定raw devices
环境 RHEL6|RHEL7,LVM2,RAW device 用途 使用LVM的lv逻辑卷绑定裸设备 1. 编辑 /etc/udev/rules.d/60-raw.rules 添加如下: ACTION ...
- 飞鱼相册笔记(1)----外置SD卡文件夹名称不区分大小写
飞鱼相册笔记(1)----外置SD卡文件夹名称不区分大小写 在飞鱼相册发布的第一个测试版中,很多用户表示无法查看外置SD卡中的照片.乍一听觉得加个外置SD卡的根目录,然后在扫描所有图片的时候把这个根目 ...
- SAP BADI的“多次使用”(multiple use)
SAP中的某些BADI是不允许多用(multiple use)的,即不能同时存在多个活动的增强实施类.如下图中的这种,无论为其创建多少个实施类,都只有活动的那一个会被触发: tips : 业务加载项定 ...
- combinations(组合)
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...
- 用python抓取智联招聘信息并存入excel
用python抓取智联招聘信息并存入excel tags:python 智联招聘导出excel 引言:前一阵子是人们俗称的金三银四,跳槽的小朋友很多,我觉得每个人都应该给自己做一下规划,根据自己的进步 ...
- mac上php版本切换
目标:Mac 环境下完成 php 版本之间的切换 在本地开发中很多时候我们需要多个版本的 php 开发环境.在公司中习惯用自己电脑开发的伙伴们,常常因为公司线上环境被迫更换php版本.但有不想降低自己 ...
- threesum
算法题 问题描述:在一些给定的数中,找到三个数,他们相加的和是0,并且这三个数的组合是不能重复的 例子: input [-1, 0, -1, 2, 1] Output [[-1, 1 ,0], [-1 ...
- Java容器:Stack,Queue,PriorityQueue和BlockingQueue
Stack Queue PriorityQueue BlockingQueue ArrayBlockingQueue LinkedBlockingQueue PriorityBlockingQueue ...
- css 选择器【转】
最近在研究jQuery的选择器,大家知道jQuery的选择器和css的选择器非常相似,所以整理一下css选择器: css1-css3提供非常丰富的选择器,但是由于某些选择器被各个浏览器支持的情况不一样 ...