首页 > 编程语言 >python3cookielib模拟登陆

python3cookielib模拟登陆

时间:2022-12-06 16:23:14浏览次数:40  
标签:cookiejar request opener cookie 登陆 import python3cookielib data 模拟

Cookie介绍

Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容,登陆前与登陆后是不同的,或者不允许的。

使用Cookie和使用代理IP一样,也需要创建一个自己的opener。在HTTP包中,提供了cookiejar模块,用于提供对Cookie的支持。

我们可以利用cookielib模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登录功能。

 

正式开始:

在python2.0版本导入cookielib直接import cookielib

python 3.6 改成 http.cookiejar了,所以只要改成from http import cookiejar就自动导入cookiejar了,如果还是不行,就把所有的.pyc删掉试试。

1、首先导入我们需要用到的模块

  1. from urllib import request
  2. from urllib import parse
  3. from http import cookiejar

2、通过cookieJar()类构建一个cookieJar()对象,用来保存cookie的值

  1. cookie = cookiejar.CookieJar()

3、通过HTTPCookieProcessor()处理器类构建一个处理器对象,用来处理cookie,参数就是构建的CookieJar()对象

  1. cookie_handler = urllib.request.HTTPCookieProcessor(cookie)

4、构建一个自定义的opener,实现帐号密码发送

  1. opener = urllib.request.build_opener(cookie_handler)
  2. opener.addheaders = [("User-Agent", "Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50")]
  3. opener.addheaders = [("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36")]
  4. url = "http://www.renren.com/"
  5. data = {"email": "xxxxx", "password":"xxxx"}
  6. data = parse.urlencode(data).encode('utf-8')
  7. my_request = request.Request(url, data = data)
  8. response = opener.open(my_request)
  9. print(response.read().decode('utf-8'))

完整代码

  1. from urllib import request
  2. from urllib import parse
  3. from http import cookiejar
  4. #通过cookieJar()类构建一个cookieJar()对象,用来保存cookie的值
  5. cookie = cookiejar.CookieJar()
  6. #通过HTTPCookieProcessor()处理器类构建一个处理器对象,用来处理cookie
  7. #参数就是构建的CookieJar()对象
  8. cookie_handler = request.HTTPCookieProcessor(cookie)
  9. #构建一个自定义的opener
  10. opener = request.build_opener(cookie_handler)
  11. #通过自定义opener的addheaders的参数,可以添加HTTP报头参数
  12. opener.addheaders = [("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36")]
  13. #人人网的登陆接口
  14. url = "http://www.renren.com/PLogin.do"
  15. #需要登陆的账户密码
  16. data = {"email": "[email protected]", "password":"alarmchime"}
  17. #通过URL encode()编码转换
  18. data = parse.urlencode(data).encode('utf-8')
  19. my_request = request.Request(url, data = data)
  20. response = opener.open(my_request)
  21. #解码
  22. print(response.read().decode('utf-8'))

标签:cookiejar,request,opener,cookie,登陆,import,python3cookielib,data,模拟
From: https://www.cnblogs.com/qboshi/p/16955631.html

相关文章

  • 模拟Etcd挂 恢复集群
    模拟Etcd挂恢复集群现象:K8S有3台master节点其中有2台挂掉现在要恢复集群将10.20.201.4010.20.201.41服务器关闭从而模拟出节点挂掉2台现在K8S集群已经无法......
  • css模拟吸顶灯效果
    css3吸顶灯效果,代码如下1<divclass="breathe-btn"></div>2<style>3body{4background:#333;5}6.breathe-btn{7position:relative;8......
  • Java使用LinkedList模拟一个堆栈或者队列数据结构
    用Java模拟一个堆栈或者队列数据结构。首先得明白堆栈和队列的数据结构:堆栈:先进后出队列:先进先出LinkedList中刚好有addFirst()和addLast()方法。1.publicclassStac......
  • 登陆案例_BeanUtils基本使用自己BeanUtils介绍
    登陆案例_BeanUtils基本使用自己BeanUtils介绍BeanUtils工具类,简化数据封装:导入jar包:commons-beanutils-1.8.0.jarLoginServlet:@WebServlet("/loginServlet")pub......
  • 【408】模拟6
    t1进出栈时,指针和赋值操作在不同情况下谁先谁后t2受限双端队列t3中缀表达式转后缀表达式操作步骤t4压缩存储,对应元素位置t5KMP算法求next数组t6最小生成树:prim......
  • 软件设计模式之模拟游角色选择(Darren建造者模式)
    o(︶︿︶)o唉,今天的状态不是很好,但是学习还是要继续的,今天和大家一起分享一下建造者模式,记得之前自己之前一直再想QQ秀换装是怎么是怎么是实现的,今天看了建造者模式我明白了........
  • 自动化SSH登陆远程主机
    有时,要在脚本中自动化SSH登陆远程主机,不输入密码,可以用公钥私匙的方法,方法如下。比如A主机中要SSH直接登陆B主机,在A主机中:1)ssh-keygen-trsa连续......
  • adb环境配置/abd连接模拟器(win)
    1、准备platform-tools工具包,并解压该工具包(一般放在非c盘的位置)下载地址:http://adbdownload.com/2、解压后添加环境变量系统变量path中添加环境变量,为adb.exe所在的文......
  • 两两交换链表中的节点-LeetCode24模拟节点
    力扣链接:https://leetcode.cn/problems/swap-nodes-in-pairs/题目给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完......
  • 测试安卓模拟器在不同硬盘的启动速度
    起因双十一时候给自己公司买SSD,因为公司电脑主板只能接SATA,Linux放机械硬盘启动特别慢,3分钟。买了英睿达的MX500(提前买没能拿到优惠很气)之后突然意识到,我已经装了另一个S......