热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pythonrequests登录_【Python数据分析】Python模拟登录(一)requests.Session应用

最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂,所以一下卡在这里

最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂, 所以一下卡在这里了,于是我决定从简单的模拟开始,逐渐深入地研究下这块。

注:本文仅为交流学习所用。

登录特点:明文传输,有特殊标志数据

会话对象requests.Session能够跨请求地保持某些参数,比如COOKIEs,即在同一个Session实例发出的所有请求都保持同一个COOKIEs,而requests模块每次会自动处理COOKIEs,这样就很方便地处理登录时的COOKIEs问题。在COOKIEs的处理上会话对象一句话可以顶过好几句urllib模块下的操作。即相当于urllib中的:

cj = http.COOKIEjar.COOKIEJar()

pro = urllib.request.HTTPCOOKIEProcessor(cj)

opener = urllib.request.build_opener(pro)

urllib.request.install_opener(opener)

模拟登录V站

本篇文章的任务是利用request.Session模拟登录V2EX(http://www.v2ex.com/)这个网站,即V站。

工具: Python 3.5,BeautifulSoup模块,requests模块,Chrome

这个网站登录的时候抓到的数据如下:

591194-20160325185213776-2034069758.png

其中用户名(u)、密码(p)都是明文传输的,很方便。once的话从分析登录URL: http://www.v2ex.com/signin 的源文件(下图)可以看出,应该是每次登录的特有数据,我们需要提前把它抓出来再放到Form Data里面POST给网站。

591194-20160325185557151-1184474741.png

抓出来还是老方法,用BeautifulSoup神器即可。这里又学到一种抓标签里面元素的方法,比如抓上面的"value",用soup.find('input',{'name':'once'})['value']即可

即抓取含有 name="once"的input标签中的value对应的值。

于是构建postData,然后POST。

怎么显示登录成功呢?这里通过访问 http://www.v2ex.com/settings 即可,因为这个网址没有登录是看不了的:

591194-20160325190853979-1969029857.png

经过上面的分析,写出源代码(参考了alexkh的代码):

import requests

from bs4 import BeautifulSoup

url = "http://www.v2ex.com/signin"

UA = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.13 Safari/537.36"

header = { "User-Agent" : UA,

"Referer": "http://www.v2ex.com/signin"

}

v2ex_session = requests.Session()

f = v2ex_session.get(url,headers=header)

soup = BeautifulSoup(f.content,"html.parser")

once = soup.find('input',{'name':'once'})['value']

print(once)

postData = { 'u': 'whatbeg',

'p': '*****',

'once': once,

'next': '/'

}

v2ex_session.post(url,

data = postData,

headers = header)

f = v2ex_session.get('http://www.v2ex.com/settings',headers=header)

print(f.content.decode())

然后运行发现成功登录:

591194-20160325191346245-1798901624.png

上面趴下来的网页源代码即为http://www.v2ex.com/settings的代码。这里once为91279.

591194-20160325191502495-25397886.png

至此,登录成功。



推荐阅读
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 跨站的艺术XSS Fuzzing 的技巧
    作者|张祖优(Fooying)腾讯云云鼎实验室对于XSS的漏洞挖掘过程,其实就是一个使用Payload不断测试和调整再测试的过程,这个过程我们把它叫做F ... [详细]
  • 这篇文章主要介绍PHP如何使用在全部作用域中始终可用的内置变量,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要 ... [详细]
  • 应用场景B接口申请参数依赖于A接口返回的数据,心愿B接口发送申请的时候能获取A接口返回的数据作为申请参数。实现思路将A接口返回的数据通过后执行脚本赋值给一个全局变量或者环境变量。具体示例咱们一个接口B须要A接口返回的参数token作为本人的申请参数。常见的场景如:拜访一个须要登陆能力浏览的接口。1、准 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 找到JDK下载URL当然去官网找了。目前最新的1.8的下载URL(RPM)如下:http:download.oracle.comotn-pubjavajdk8u161-b122f3 ... [详细]
  • Java大文件HTTP断点续传到服务器该怎么做?
    最近由于笔者所在的研发集团产品需要,需要支持高性能的大文件http上传,并且要求支持http断点续传。这里在简要归纳一下,方便记忆 ... [详细]
  • Request对象和Response对象request:(请求)当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpRequest对象。Djang ... [详细]
  • 第一种<script>$(".eq").on(&qu ... [详细]
  • SQLiLabs靶场的介绍、下载与安装
    介绍SQLi-Labs是一个专业的SQL注入练习平台下面的测试场景都支持GET和POST两种注入方式:1.报错注入(联合查询)1)字符型2)数字型2.报错注入(基于 ... [详细]
  • springboot基于redis配置session共享项目环境配置pom.xml引入依赖application.properties配置Cookie序列化(高版本不需要)测试启 ... [详细]
  • Cookie和Session的联系Cookie是在客户端保持状态,Session是在服务器端保持状态。由于服务器端保持状态在客户端也需要保存一个标识,所以Session需要借助于 ... [详细]
author-avatar
南航爱心社
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有