用python代码模拟登录网站
方法一:直接使用已知的cookie访问
特点:
简单,但需要先在浏览器登录
具体步骤:
1.用浏览器登录,获取浏览器里的cookie字符串
先使用浏览器登录。再打开开发者工具,转到network选项卡。在左边的Name一栏找到当前的网址,选择右边的Headers选项卡,查看Request Headers,这里包含了该网站颁发给浏览器的cookie。对,就是后面的字符串。把它复制下来,一会儿代码里要用到。
注意,最好是在运行你的程序前再登录。如果太早登录,或是把浏览器关了,很可能复制的那个cookie就过期无效了。

urllib库的版本代码
"""
直接获取 个人中心的页面
手动粘贴 辅助 pc 抓包的 cookies
放在 request对象的请求头里面
""" import urllib.request #1 数据url
url = "https://www.yaozh.com/member/"
#2 添加请求头
headers = {
"User-Agent":" Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3650.400 QQBrowser/10.4.3341.400"
,"Cookie":"acw_tc=2f624a7515558225995774143e31e6ef327f4bf5a2beec95289a6d4258f121; PHPSESSID=1rhel4pftt6lbmc6bhtkpjn7u4; yaozh_logintime=1555822916; yaozh_user=734735%09huazaid; yaozh_userId=734735; MEIQIA_VISIT_ID=1KA8DcXDfMW6WEeGhLuPgn9T0p0; yaozh_uidhas=1; yaozh_mylogin=1555822922; acw_tc=2f624a7515558225995774143e31e6ef327f4bf5a2beec95289a6d4258f121; MEIQIA_VISIT_ID=1KA8DcXDfMW6WEeGhLuPgn9T0p0"
}
#3 构建请求对象
request = urllib.request.Request(url,headers=headers)
#4 发送请求对象
response = urllib.request.urlopen(request) #5 读取数据
data = response.read()
#保存到文件中,验证数据
with open("01cook.html","wb")as f:
f.write(data)
方法二:直接使用账号密码登录访问
退出登录,按F12 ,再登录,抓取数据

formhash和backurl要在登陆之前找代码
"""
获取 个人中心的页面
1.代码登录 登录成功 cookie(有效)
2. 自动带着cookie 去请求个人中心 cookiejar 自动保存这个cookie
"""
import urllib.request #请求库
from http import cookiejar #保存cookie用的
from urllib import parse #转译
#登录之前的, 登录页的网址https://www.yaozh.com/login
#找登录参数 #后台 根据你发送的请求方式来判断的 如果你是get(登录页面),如果POST(登录结果)
#1.代码登录
# 1.1 登录的网址
login_url = "https://www.yaozh.com/login" #1.2 登录的参数
login_form_data = {
"username": "用户",
"pwd": "密码",
"formhash": "E2F4BF731C",
"backurl": "https%3A%2F%2Fwww.yaozh.com%2F", }
#1.3 发送登录请求POST
cook_jar = cookiejar.CookieJar()
#定义有添加 cook 功能的 处理器
cook_hanlder = urllib.request.HTTPCookieProcessor(cook_jar)
#根据处理器 生成 opener
opener = urllib.request.build_opener(cook_hanlder) #带着参数 发送post请求
#添加请求头
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3650.400 QQBrowser/10.4.3341.400"}
#1 参数 将来 需要转译 转码; 2 post 请求的 data 要求是bytes
login_str = parse.urlencode(login_form_data).encode('utf-8')
login_request = urllib.request.Request(login_url,headers=headers,data=login_str)
#如果登录成功,cookjar自动保存cookie
opener.open(login_request) # 2 代码带着cookie去访问 个人中心
center_url = "https://www.yaozh.com/member/"
center_request = urllib.request.Request(center_url,headers=headers)
response = opener.open(center_url)
#bytes -->str
data = response.read().decode() with open("02cook.html","w",encoding="utf-8")as f:
f.write(data)
用python代码模拟登录网站的更多相关文章
- 用python实现模拟登录人人网
用python实现模拟登录人人网 字数4068 阅读1762 评论19 喜欢46 我决定从头说起.懂的人可以快速略过前面理论看最后几张图. web基础知识 从OSI参考模型(从低到高:物理层,数据链路 ...
- Python requests模拟登录
Python requests模拟登录 #!/usr/bin/env python # encoding: UTF-8 import json import requests # 跟urllib,ur ...
- 【爬虫】python requests模拟登录知乎
需求:模拟登录知乎,因为知乎首页需要登录才可以查看,所以想爬知乎上的内容首先需要登录,那么问题来了,怎么用python进行模拟登录以及会遇到哪些问题? 前期准备: 环境:ubuntu,python2. ...
- 使用Python+Selenium模拟登录QQ空间
使用Python+Selenium模拟登录QQ空间爬QQ空间之类的页面时大多需要进行登录,研究QQ登录规则的话,得分析大量Javascript的加密解密,这绝对能掉好几斤头发.而现在有了seleniu ...
- Python爬虫模拟登录带验证码网站
问题分析: 1.爬取网站时经常会遇到需要登录的问题,这是就需要用到模拟登录的相关方法.python提供了强大的url库,想做到这个并不难.这里以登录学校教务系统为例,做一个简单的例子. 2.首先得明白 ...
- Python 3.3.3 使用requests模拟登录网站
在模拟登录上,requests确实比python标准库中的相关模块更加简洁. 假设你需要去爬一组页面(targetUrls),而这些页面要登录才能进行访问.那么requests能够提供一种相当简单的语 ...
- [Python] 模拟登录网站(。。为了之后操作数据。。)
我司的内部管理(Web)系统(日报)着实..(mafan).. 所以,就想自己动手增加一下便利性. 计划是, - 桌面程序 用来方便记录(按自己格式,数据随时保存到sqlite中,备用) 通过一览来确 ...
- python实现模拟登录【转】
原文网址:http://www.blogjava.net/hongqiang/archive/2012/08/01/384552.html 本文主要用python实现了对网站的模拟登录.通过自己构造p ...
- python实现模拟登录
本文主要用python实现了对网站的模拟登录.通过自己构造post数据来用Python实现登录过程. 当你要模拟登录一个网站时,首先要搞清楚网站的登录处理细节(发了什么样的数据,给谁发等...). ...
随机推荐
- [阿里云] 云数据库mongodb外网连接
原教程,https://www.alibabacloud.com/help/zh/doc-detail/55253.htm 但按照这里的教程,还是连不上mongdb,甚至在ECS上也ping不通mon ...
- Redis批量导入数据的方法
有时候,我们需要给redis库中插入大量的数据,如做性能测试前的准备数据.遇到这种情况时,偶尔可能也会懵逼一下,这里就给大家介绍一个批量导入数据的方法. 先准备一个redis protocol的文件( ...
- mysql:数据库备份方案
1. 数据库备份方案 1)没备份,跑路~ 2)全量备份+增量备份 如果不小心“删库”,可以这么恢复: a. 将最近一次全量备份的全库找到,拷贝回来(文件一般比较大),解压,应用: b. ...
- 2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析 一.原理与实践说明 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2 ...
- 2.1JAVA基础复习——JAVA语言的基础组成注释和常量变量
JAVA语言的基础组成有: 1.关键字:被赋予特殊含义的单词. 2.标识符:用来标识的符号. 3.注释:用来注释说明程序的文字. 4.常量和变量:内存存储区域的表示. 5.运算符:程序中用来运算的符号 ...
- Python day 02
基础&运算符 今日概要 循环 字符串格式化 运算符 编码 内容回顾 & 补充 内容回顾 计算机基础 解释器python 2 和 python 3 语法 print input if / ...
- 【POJ 2176】Folding
[原题链接]传送门 [题面大意] 一个字符串,可以将它改写成循环节带括号的形式进行压缩,输出压缩长度最小的字符串. [题解思路] 1.没思路没思路,不知道怎么乱搞,大概就可以想到动态规划. 2.套路区 ...
- CF666E Forensic Examination
思路 线段树合并+广义SAM 先把所有串都插入SAM中,然后用线段树合并维护right集合,对S匹配的同时离线询问,然后就好啦 代码 #include <cstdio> #include ...
- Redis 单机版
Redis 支持单机版和集群,下面的步骤是单机版安装步骤 1. # yum install -y gcc-c++ 1.1 由于是c语言编写,所以需要安装支持组件 2. 把压缩包上传到linux服务器上 ...
- 容器中的诊断与分析2——live diagnosis——perf
Linux下的内核测试工具——perf使用简介 系统级性能分析工具 — Perf linux perf - 性能测试和优化工具:示例&应用 从2.6.31内核开始,linux内核自带了一个性能 ...
代码