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

一、教程简介

1.1 基本介绍

通过分析登陆流程并使用 Python 实现模拟登陆到一个实验提供的网站,在实验过程中将学习并实践 Python 的网络编程,Python 实现模拟登陆的方法,使用 Firefox 抓包分析插件分析网络数据包等知识。

模拟登录可以帮助用户自动化完成很多操作,在不同场合下有不同的用处,无论是自动化一些日常的繁琐操作还是用于爬虫都是一项很实用的技能。本课程通过 Firefox 和 Python 来实现,环境要求如下:

  • Python 库:urllib, http.cookiejar, Django
  • Firefox 要求:装有 live http header插件 (已提供)

1.3 材料

1.4 准备

1) 安装抓包插件Live Http Headers

2)启动web应用

使用 ps -aux | grep codebox 查询获得 codebox 的进程号,然后使用 kill -9 进程号 停止 codebox 进程。执行过程见下图:

首先安装demo依赖的web框架django,并测试是否安装成功:

启动成功后在浏览器中输入 http://localhost:8000/polls 看到登录页面表示启动成功

二、分析登录过程

要通过编程实现登录,首先需要理解一般Web应用的登陆过程。

2.1 抓取请求

2.2原理分析

为什么是2个请求而不是1个呢?通过分析登录请求发现,登陆成功之后服务器发送了302重定向响应,服务器要求浏览器重新请求首页,这就产生了第二个请求。再来分析第二个请求,可以看到它相比登录请求多了一个请求头:

整个登录流程如下图所示:

服务器到底是如何区别不同用户的session的?为什么登陆成功会后要回写cookie呢?

2.3小结

对于服务器来说,登录=验证+写session。对于浏览器来说,登录=发送登录信息+获取带sessionid的cookie。可以说,只要获得了sessionid,就算实现了模拟登录。有了它我们便可以游离于系统之中。

三、使用Python实现登录(简单实例)

理解了登录过程的原理和细节之后,开始用Python来编写模拟登陆程序吧。

3.1导入模块

不要忘记编写文件头、导入必要的依赖模块

3.2构造登录请求

登录请求的实体部分如下:

全部Python代码:

附加参数

防盗链

Web 应用的资源都是有url的,只要获得了url就能够在任何地方引用。听起来很方便,但这可能会导致你的资源被别人盗用。

3.3发送请求并保存cookie

Python代码如下:

如果登陆成功

就可以在指定的文件my_cookies.txt中看到sessionid了。

3.4 使用cookie访问系统服务

在我们模拟登录成功后,就可以直接通过opener打开这个url来使用这项系统服务。代码实现如下:

如果有是在另外一个python文件中使用这个cookie的话,再打开url之前需要先载入cookie:

教程取自实验楼。

原文地址:https://www.cnblogs.com/q1613161916/p/9305733.html

时间: 2024-12-29 11:13:29

通过抓包,实现Python模拟登陆各网站,原理分析!的相关文章

Python模拟登陆万能法-微博|知乎

Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法.你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆.本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅用其作为例子来讲解. 用到的库有"selenium"和"requests".通过selenium进行模拟登陆,然后将Cookies传入requests,最终用requests进行网站的抓取.优点就是不但规避了"selenium"其本身抓取速度慢的问题

Python模拟登陆万能法

此文转自:https://zhuanlan.zhihu.com/p/28587931   转录只是为了方便学习,感谢他的分享 Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法.你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆.本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅用其作为例子来讲解. 用到的库有"selenium"和"requests".通过selenium进行模拟登陆,然后将Cookies传入reque

jmeter数据库,charles抓包,Python循环语句

jmeter数据库,charles抓包,Python循环语句 一.Jemeter数据库 添加jar包数据库 jemeter=>浏览 添加JDBC Connection Configuration 配置数据 mysqlurl:jdbc:mysql://ip:port/db?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true driver class:com.mysql.jdbc.Driver       4. 操作

模拟登陆 12306网站

目录 模拟登陆 12306网站 准备 需求分析 实现代码 原文地址:https://www.cnblogs.com/guokaifeng/p/11695389.html

python模拟登陆实践

对于一些需要登陆的网址爬取数据,需要登录才能访问.本文介绍如何利用python进行模拟登陆 准备工具: 1.搭建django 框架 用于模拟登陆 2.fiddler抓包工具,chrome浏览器 3.pycharm   编辑器 步骤: 1.开启django 服务,这里就不多描述,直接百度一下,就能找到很多答案(记得创建一个superuser,以便后面的登陆 ) 进入 http://127.0.0.1:8000/admin/     这是django自带的后台,进行登陆时,django自带了  cs

Python模拟登陆2:获取电子科大研究生成绩

前面小试了一把 能够成功登陆,但是这下要获取成绩可是废了好多功夫.首先他这个登陆只是登陆了一个frame框架页面,里面还有个js的二次跳转页面.还会自动登陆一次.只有在IE或者谷歌等http抓包才看的出来隐藏的地址. 开始以为很简单 直接在第二个登陆页面提交post 谁知道 他会自动跳转到第一个登陆页面 前端白痴的我有点乱入了. 最后试来试去, 偷偷去看了下cookies ,尝试性的直接提交了cookies想不到 成功了. 但是这个cookies是在成绩页面 不知道是request还是respo

Python模拟登陆

模拟人人登陆 #encoding=utf-8 import urllib2 import urllib import cookielib def renrenBrower(url,user,password): #登陆页面,能够通过抓包工具分析获得,如fiddler.wireshark login_page = "http://www.renren.com/PLogin.do" try: #获得一个cookieJar实例 cj = cookielib.CookieJar() #cook

Python模拟登陆练习——imooc.com登陆

写下这篇文章的时候,是博主学习python的第三天( 也许是第四天:( ),python是博主接触的第二门解释型语言(第一门是javascript). 讲真在很久之前就想要用博客记录自己的学习历程了,然而就像写日记一样,写着写着就放弃了-.- so今天决定给自己一个好的开端~ 博主的学习方式是直奔目的,遇到问题百度各种博客,网站,百度找不到google找,就这样.这种学习方式是真的见效快,但显而易见,基础会比较薄弱. 因此学习python的基本语法,就直奔爬虫了! ---------------

Python模拟登陆:模拟登陆电子科大信息门户测试

最近在学习Python的网络操作,网上有很多模拟登陆方法.这里做个笔记. 没有验证码的还是比较容易的. #coding:utf-8 import re import urllib import urllib2 import cookielib import os import json import sys import time from urllib import quote,unquote from urllib2 import HTTPError from urllib2 import