我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python模拟登陆网站的示例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python模拟登陆网站的示例

使用已有cookie登陆

使用浏览器登陆,获取浏览器中的cookie信息,来进行登陆。

我们以博客园为例,先登录博客园账号。我们访问随笔列表,在控制台我们可以看到我们登陆后浏览器的cookie

剔除一些数据统计及分析的cookie,剩下的就是登陆可能需要的.CNBlogsCookie和.Cnblogs.AspNetCore.Cookies


# _ga google分析 cookie
# UM_distinctid 友盟cookie
# CNZZxxx CNZZcookie
# __utma,__utmc,__utmz google统计网站
# Hm_lvt_xxx 百度统计网站

import urllib.request

url = 'https://i.cnblogs.com/posts'

user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'

#浏览器登录后得到的cookie,也就是刚才复制的字符串
cookie_str = '.CNBlogsCookie=xxx; .Cnblogs.AspNetCore.Cookies=xxx'

headers = {
 'User-Agent': user_agent,
 'cookie':cookie_str
}

req = urllib.request.Request(url,headers=headers)
resp = urllib.request.urlopen(req).read().decode('utf-8')

print(resp)

登陆获取cookie

登陆的表单一般是使用的form data,现在也有些表单使用request payload使用json格式传参。

form data如药智网

request payload如博客园

form data

博客园的登陆需要拖动验证所以略过。我们以药智网为例,我们打开控制台可以看到登陆需要传的表单参数,这里是使用的form data表单。我们模拟登陆后获取到登陆后的cookie,然后访问登录后的个人中心页面。


import urllib.request
import http.cookiejar

url = 'https://www.yaozh.com/login'

user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'

# formData数据
data = {'username': '用户名',
  'pwd': '密码',
  'formhash': 'C3086BBA84',
  'backurl': 'https%3A%2F%2Fwww.yaozh.com%2F'}

post_data = urllib.parse.urlencode(data).encode('utf-8')

# 请求头设置
headers = {
 'User-Agent': user_agent
}

# 构造登陆请求
req = urllib.request.Request(url, headers=headers, data=post_data)

# cookie
cookie = http.cookiejar.CookieJar()

# 构造一个opener携带登录后的cookie
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))

# 发送登陆请求
resp = opener.open(req)

print(resp)

# 登录后个人中心
url = 'https://www.yaozh.com/member/'

# 构造访问请求
req = urllib.request.Request(url, headers=headers)

resp = opener.open(req).read().decode('utf-8')

print(resp)

request payload

如果登陆需要request payload我们需要将参数转为json字符串并在头部设置Content-Type


import json
...

data = {'loginType': '1',
  'pwdOrVerifyCode': '密码',
  'userIdentification': '账号',
  'uaToken': '',
  'webUmidToken':''}

headers = {
 'Content-Type': 'application/json;charset=UTF-8',
 'User-Agent': user_agent
}


req = urllib.request.Request(url, headers=headers, data=json.dumps(data))
...

登陆后用session保持登陆状态

我们用requests模块的Session对象来保存回话信息


import requests

url = 'https://www.yaozh.com/login'

user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'

# formData数据
data = {'username': 'chenjy1225',
  'pwd': '19931225yjy',
  'formhash': 'C3086BBA84',
  'backurl': 'https%3A%2F%2Fwww.yaozh.com%2F'}


#构造Session
session = requests.Session()

# 发送post请求
resp = session.post(url, data)

# 登录后个人中心
url = 'https://www.yaozh.com/member/'

# 发送请求访问个人中心
resp = session.get(url).content.decode('utf-8')

print(resp)

调用浏览器登陆

我们也可以在程序中调用一个浏览器来访问登陆网站。在python中使用Selenium库就能轻松实现调用浏览器,被控制的浏览器可以是chrome、firefox等。
以前较常用的还是PhantomJS但是PhantomJS被python弃用了。

UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '

firefox对应的geckodriver

chrome对应的chrnpm.taobao.org/mirrors/chromedriveromedriver

1.下载Selenium、firefox浏览器及firefox驱动。

2.将下载的firefox驱动geckodriver放在firefox浏览器安装目录

3.将firefox浏览器安装目录添加到path中

4.重启ide

我们找到需要登陆时候输入的元素id及登陆button id。


from selenium import webdriver
import time

# 新建selenium浏览器对象,后面是geckodriver.exe下载后本地路径
browser = webdriver.Firefox()

url = 'https://www.yaozh.com/login'

# 浏览器访问登录页面
browser.get(url)

# 等待3s用于加载脚本文件
browser.implicitly_wait(3)

# 输入用户名
username = browser.find_element_by_id('username')
username.send_keys('chenjy1225')

# 输入密码
password = browser.find_element_by_id('pwd')
password.send_keys('19931225yjy')

# 点击登录按钮
login_button = browser.find_element_by_id('button')
login_button.submit()

# 网页截图
browser.save_screenshot('screenshot.png')

# 强制等待5s,等待登录后的跳转
time.sleep(5)

url = 'https://www.yaozh.com/member/'

browser.get(url)

# 网页截图个人中心
browser.save_screenshot('screenshot1.png')

# 关闭浏览器
browser.quit()

screenshot.png:

screenshot1.png:

以上就是python模拟登陆网站的示例的详细内容,更多关于python模拟登陆网站的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python模拟登陆网站的示例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python模拟登陆Github示例

首先进入github登录页:https://github.com/login输入账号密码,打开开发者工具,在Network页勾选上Preserve Log(显示持续日志),点击登录,查看Session请求,找到其请求的URL与Form Da
2023-01-31

python怎么模拟登陆网站

这篇文章主要介绍了python怎么模拟登陆网站,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用已有cookie登陆使用浏览器登陆,获取浏览器中的cookie信息,来进行登陆
2023-06-14

python实现网站的模拟登录

本文主要用python实现了对网站的模拟登录。通过自己构造post数据来用Python实现登录过程。 当你要模拟登录一个网站时,首先要搞清楚网站的登录处理细节(发了什么样的数据,给谁发等...)。我是通过HTTPfox来抓取http数据包来
2022-06-04

通过抓包实现Python模拟登陆各网站的原理分析

今天就跟大家聊聊有关通过抓包实现Python模拟登陆各网站的原理分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、教程1.1 基本介绍通过分析登陆流程并使用 Python 实现模
2023-06-17

java爬虫实战之模拟登陆的示例分析

这篇文章主要介绍了java爬虫实战之模拟登陆的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web
2023-06-14

Python模拟用户自动登陆网易126邮

Python模拟用户自动登陆网易126邮箱的源码详解,在这里主要来和大家讲一讲,关于利用Python程序来实现自动登录(登陆)网易的126邮箱email的源码与方法,其它邮箱可以借鉴此Python程序代码发邮件。涉及到Python针对邮箱操
2023-01-31

Python项目实战:密码模拟登陆猎聘网

前言今天为大家介绍一个模拟登陆猎聘网招聘网站的案列,加了一个输入密码不可的模块getpass,这样更有安全性,可能实际应用不大,但是存在必有价值,就当是一个案例的练习吧,看看是如何做到模拟登陆猎聘网的导入第三方库
2023-06-02

通过抓包实现Python模拟登陆各网站的原理分析是怎样的

这篇文章将为大家详细讲解有关通过抓包实现Python模拟登陆各网站的原理分析是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  一、教程简介  1.1 基本介绍(私信小编001 、00
2023-06-02

Python项目实战:15行Python代码模拟登陆人人网

前言今天为大家介绍一个利用Python模拟登陆人人交友网的案例,通过会话请求来登陆,可能没有什么实际的应该的,但是大家来看看这个最简单的案例吧,看看如何做到用这么少的Python代码来实现模拟登陆的导入第三方库
2023-06-02

Python爬虫模拟登录带验证码网站

爬取网站时经常会遇到需要登录的问题,这是就需要用到模拟登录的相关方法。python提供了强大的url库,想做到这个并不难。这里以登录学校教务系统为例,做一个简单的例子。 首先得明白cookie的作用,cookie是某些网站为了辨别用户身份、
2022-06-04

Python爬虫利用cookie实现模拟登陆实例详解

Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。 举个例子,某些网站是需要登录后才能得到你想要的信息的,不登陆只能是游客模式,那么我们可以利用Urllib2库保存我们以前登录过的
2022-06-04

python项目实战:切换iframe模拟登陆126网易邮箱

前言今天为大家介绍一个模拟登陆126网易邮箱的案例,大多数登陆都是用input,今天这个案例特殊一点,126登陆框是使用iframe进行嵌套的,所以需要先切换到该iframe,但是还有要用到selenium来控制浏览器导入第三方库
2023-06-02

使用Post方法模拟登陆爬取网页的实现方法

最近弄爬虫,遇到的一个问题就是如何使用post方法模拟登陆爬取网页。下面是极简版的代码:import java.io.BufferedReader;import java.io.InputStreamReader;import java.i
2023-05-31

Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享

支付宝十年账单上的数字有点吓人,但它统计的项目太多,只是想看看到底单纯在淘宝上支出了多少,于是写了段脚本,统计任意时间段淘宝订单的消费情况,看那结果其实在淘宝上我还是相当节约的说。 脚本的主要工作是模拟了浏览器登录,解析“已买到的宝贝”页面
2022-06-04

用Python模拟网站中对JavaScript加密的方法

这篇文章主要介绍“用Python模拟网站中对JavaScript加密的方法”,在日常操作中,相信很多人在用Python模拟网站中对JavaScript加密的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”用
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录