import requests'''
目的:模拟登陆抽屉网
工具:python3
所用模块:requests ----->模拟浏览器的请求,并且得到返回消息'''# 1.登陆地址的获取:
#       抽屉网的登陆页面并不是刷新整个页面,属于ajax局部请求,要首先找到登陆地址,手工模拟登陆,输入错误信息
#       在network中,出现了login项,点开发现页面请求 Request URL: https://dig.chouti.com/login
#       于是乎知道了登陆地址,然后下拉找到请求体,里面包含了我们输入的错误的登陆信息。# 2.获取cookie:
#      要想获得网站信任,还必须拿到服务器给我们的cookie,而且是被网站授权的,输入正确登陆信息,登陆信息resp = requests.post(url='https://dig.chouti.com/login',headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'},data={'phone': '86123455', #注意,按照登陆格式,手机号前面加上86,且为字符串格式'password':'1234556','oneMonth': 1}
)
cook = resp.cookies.get_dict()  #拿到被授权的cookies,resp.cookies 返回的是一个对象,它的方法get_dict()得到cookies字典
print(cook)
print(resp.status_code)  #状态码 200 访问成功# 3.我们拿到被授权信任的cookies后就可以绕开登陆,直接进入自己的个人页面,比如说  我的钱包resp = requests.post(url='https://dig.chouti.com/user/pay/account/1',headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'},cookies = cook
)print(resp.text)  #获取返回的html文本
print(resp.status_code)#结果返回文本的标题是404,但访问状态却是200,说明被拒绝了访问,但是我们的确是通过输入正确的密码得到了被授权的cookies
#不应该被拒绝访问的,大部分网站的确如此。# 4.排错:
#       网站大多都是依赖cookies识别用户的,而我们的确是通过输入正确的信息得到了cookies,但却失败了,
#       说明cookies还是出问题了。cookies字典里面有很多项,其中一个必然是必要的,我们要在正确的登陆状态下,将
#       这个字典键找出来。输入正确的登陆信息进入网站,找到文章列表,找到文章的推荐点赞选项,随机点一个,然后分析链接的去处得到
#       https://dig.chouti.com/link/vote?linksId=19901931,然后再在请求体里面找到cookies字典,一个个实验里面的选项。resp = requests.post(url='https://dig.chouti.com/link/vote?linksId=19901931',headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'},cookies = {'gpsd':'3f4e4613fca69b6da0501a5686c36b10'} #先测试cookies的第一个gpsd
)
print(resp.text)#注意运行前请先将之前的代码注释!
#结果如下
#{"result":{"code":"9999", "message":"推荐成功", "data":{"jid":"cdu_52741899231","likedTime":"1527689471149000","lvCount":"50","nick":"哈罗","uvCount":"3","voteTime":"小于1分钟前"}}}
#推荐成功!
#说明这个gpsd是最重要的,其它不重要,只要通过这个就可以免登陆了。
#然后我们再次运行第二步里面的代码得到的cookies值,发现登陆首页gpsd选项根本不一样,说明我们按照正确登陆方式获取的cookies没被授权,那现在这个正确的cooies
#又是从哪里来的呢?
#我们忽略了一步,我们是直接进入登陆url的,即https://dig.chouti.com/login,但是正常的顺序应该是先登陆首页,再进入登陆页面,正确的cookies也只能在这一步
#产生了;
#如果真如我们分析一样,流程大体如下:
#登陆网站首页 ---> 获取了一个cookies1 ----> 再进入登陆页面输入正确的登陆信息 -----> 获取了我们以为已经被授权的cookies2,
#但其实这里面被动了手脚,真正被信任的还是cookies1里面的gpsd,登陆那一步,只是为了让这个gpsd得到网站的授权。
#可以进行实验。#将第二步正确登陆获得的gpsd替换掉第4步的gpsd(请先将之前的点赞给取消掉!将第三步代码注释掉)
#发现访问失败。
#所以我们要得到登陆首页的gpsd,然后携带这个gpsd正确登陆,使这个gpsd得到网站信任。# 5.正确流程如下:(运行时请注释上面代码)#   一,登陆首页,获取第一个cookies的gpsd
resp = requests.get(url='https://dig.chouti.com/',headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'})cook1 = resp.cookies.get_dict()
print(cook1)#  二,携带第一次获取的cookies,正确登陆
resp = requests.post(url='https://dig.chouti.com/login',headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'},data={'phone': '86123243244','password':'12324234','oneMonth': 1},cookies = cook1
)
cook2 = resp.cookies.get_dict()
# print(cook)
# print(resp.text)
gpsd = cook1['gpsd']
print(gpsd)
print(cook2)#  三,可以利用已经被授权的cookies的gpsd进行点赞操作
response = requests.post(url='https://dig.chouti.com/link/vote?linksId=19901811',headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'},cookies = {'gpsd':cook1.get('gpsd')})
print(response.text)
print(response.status_code)

学习笔记(2):模拟登陆抽屉网(ajax)相关推荐

  1. JavaWeb黑马旅游网-学习笔记03【登陆和退出功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  2. python爬虫学习笔记2模拟登录与数据库

    前言 为了加入学校里面一个技术小组,我接受了写一个爬取学校网站通知公告的任务.这个任务比以前写的爬虫更难的地方在于,需要模拟登录才能获得页面,以及将得到的数据存入数据库. 本文按照日期来记录我完成任务 ...

  3. 学习笔记——web网页庐山旅游网

    学习笔记--web网页庐山旅游网 这学期学习了web技术,简单学习了H5+CSS+JS的知识. 这是一个简单的前端,采用html.一共五个页面. 首页index.html <!DOCTYPE h ...

  4. 【python爬虫学习】cookie模拟登陆

    近期学校要求登陆一个网站学习,要计算在线时长,长时间不对这个页面进行操作的话就会停止计时.就想着能不能写个程序模拟登陆并进行一些操作. 模拟登陆的话有很多方法,因为有验证码比较麻烦,所以我是自己先登陆 ...

  5. selenium模拟登陆豆瓣网

    前言 随着网站安全做的越来越好,不少网站,直接去爬取数据是无法爬出来的,必须要验证登陆,即登陆之后才能做后面的操作,因此需要解决的第一步就是登陆 登陆的常用方式: 1.使用request库,模拟pos ...

  6. 条件分歧 java_FORTRAN-95程序设计学习笔记-资源下载人人文库网

    <FORTRAN-95程序设计>学习笔记 FORTRAN 95程序设计学习笔记66RPG gg 目录 FORTRAN 95程序设计学习笔记1基础知识(基础.字符串.FORMAT.隐式.TY ...

  7. HTML5学习笔记(二十七):Ajax

    在Ajax出现之前,网页页面加载后,需要请求服务端数据刷新页面时,整个页面都需要重新加载一次,对于只有一小个区域的数据更新也必须刷新整个页面. 这个窘境在出现XMLHttpRequest对象之后得到了 ...

  8. JAVA学习笔记33——模拟实现HandSet+数据存储综合练习(javabean版+容器板)

    最近在看JAVA教学的视频,觉得老师讲的很好,同时借用源代码还有笔记来撰写本系列博客,记录自己的学习内容,同时也供看到的人学习. 本篇第一个内容是模拟实现HandSet,其实这个模拟和之前的相比简陋了 ...

  9. 学习笔记(九)——JSON 和 AJAX

    文章目录 一.JSON 1.1.JSON 是什么? 1.2.JSON 字符串转 JS 对象 1.3.JS 对象转 JSON 字符串 二.前后端交互 三.AJAX 3.1.什么是 AJAX ? 3.2. ...

  10. python学习第一周 模拟登陆

    今天开始学习python,在这个博客记录下学习过程,当作自己成长的见证. #!/usr/bin/env python # -*- coding: utf-8 -*- ## Author:lzf8989 ...

最新文章

  1. IOS开发之自定义UIActionSheet
  2. bat/cmd 抛出错误码和捕获错误
  3. Lambda标准格式
  4. mysql中使用安全等于 <=>
  5. 高等数学下-赵立军-北京大学出版社-题解-练习12.1
  6. 前端html,css基础总结
  7. 逻辑回归算法_算法逻辑回归
  8. android自定义控件(6)-详解在onMeasure()方法中如何测量一个控件尺寸
  9. Error(1.0.5 1107071739): D:\SAE_SDK_Windows_1.0...
  10. JavaScript基础流程控制(3)
  11. 常用正则表达式归类贴
  12. 水电缴费系统php源码_php简易扫码付教育收费系统 v1.2
  13. coreldraw怎么打印荣誉证书_使用Word 2010制作并打印荣誉证书的方法
  14. 观《五星大饭店》有感
  15. 数值分析常用的几个小程序C++实现
  16. websocket 给服务端发送太长数据处理(The decoded text message was too big for the output buffer and the endpoint )
  17. id门禁卡复制到手机_门禁卡复制到手机苹果
  18. HDMI 转换芯片——MS1836S
  19. 核音智言 | 数字孪生IOC,助力城市治理智能高效!
  20. 图情论文笔记 | 学术图书馆“十四五”规划的思考(杨新涯)

热门文章

  1. Hello, CTF WP
  2. SpringMvc下载文件损坏
  3. rails kaminari bootstrap-kaminari-views
  4. 隐藏IIS响应头信息
  5. 8-1 职场价值塑造-摆脱低价值瓶颈,展示高价值收获新机会
  6. 看完不会你揍我!!Pytorch利用文本数据建立自己的数据集- Dataset Dataloader详解 附案例
  7. 人工智能与大数据就业前景_大数据专业和人工智能专业哪个前景更好
  8. 复旦大学数学学院 17 级本科生对每周一题的评价
  9. 【转】如何使html5语义化标签兼容ie
  10. 洛谷P1427 小鱼的数字游戏