学习笔记(2):模拟登陆抽屉网(ajax)
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)相关推荐
- JavaWeb黑马旅游网-学习笔记03【登陆和退出功能】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...
- python爬虫学习笔记2模拟登录与数据库
前言 为了加入学校里面一个技术小组,我接受了写一个爬取学校网站通知公告的任务.这个任务比以前写的爬虫更难的地方在于,需要模拟登录才能获得页面,以及将得到的数据存入数据库. 本文按照日期来记录我完成任务 ...
- 学习笔记——web网页庐山旅游网
学习笔记--web网页庐山旅游网 这学期学习了web技术,简单学习了H5+CSS+JS的知识. 这是一个简单的前端,采用html.一共五个页面. 首页index.html <!DOCTYPE h ...
- 【python爬虫学习】cookie模拟登陆
近期学校要求登陆一个网站学习,要计算在线时长,长时间不对这个页面进行操作的话就会停止计时.就想着能不能写个程序模拟登陆并进行一些操作. 模拟登陆的话有很多方法,因为有验证码比较麻烦,所以我是自己先登陆 ...
- selenium模拟登陆豆瓣网
前言 随着网站安全做的越来越好,不少网站,直接去爬取数据是无法爬出来的,必须要验证登陆,即登陆之后才能做后面的操作,因此需要解决的第一步就是登陆 登陆的常用方式: 1.使用request库,模拟pos ...
- 条件分歧 java_FORTRAN-95程序设计学习笔记-资源下载人人文库网
<FORTRAN-95程序设计>学习笔记 FORTRAN 95程序设计学习笔记66RPG gg 目录 FORTRAN 95程序设计学习笔记1基础知识(基础.字符串.FORMAT.隐式.TY ...
- HTML5学习笔记(二十七):Ajax
在Ajax出现之前,网页页面加载后,需要请求服务端数据刷新页面时,整个页面都需要重新加载一次,对于只有一小个区域的数据更新也必须刷新整个页面. 这个窘境在出现XMLHttpRequest对象之后得到了 ...
- JAVA学习笔记33——模拟实现HandSet+数据存储综合练习(javabean版+容器板)
最近在看JAVA教学的视频,觉得老师讲的很好,同时借用源代码还有笔记来撰写本系列博客,记录自己的学习内容,同时也供看到的人学习. 本篇第一个内容是模拟实现HandSet,其实这个模拟和之前的相比简陋了 ...
- 学习笔记(九)——JSON 和 AJAX
文章目录 一.JSON 1.1.JSON 是什么? 1.2.JSON 字符串转 JS 对象 1.3.JS 对象转 JSON 字符串 二.前后端交互 三.AJAX 3.1.什么是 AJAX ? 3.2. ...
- python学习第一周 模拟登陆
今天开始学习python,在这个博客记录下学习过程,当作自己成长的见证. #!/usr/bin/env python # -*- coding: utf-8 -*- ## Author:lzf8989 ...
最新文章
- IOS开发之自定义UIActionSheet
- bat/cmd 抛出错误码和捕获错误
- Lambda标准格式
- mysql中使用安全等于 <=>
- 高等数学下-赵立军-北京大学出版社-题解-练习12.1
- 前端html,css基础总结
- 逻辑回归算法_算法逻辑回归
- android自定义控件(6)-详解在onMeasure()方法中如何测量一个控件尺寸
- Error(1.0.5 1107071739): D:\SAE_SDK_Windows_1.0...
- JavaScript基础流程控制(3)
- 常用正则表达式归类贴
- 水电缴费系统php源码_php简易扫码付教育收费系统 v1.2
- coreldraw怎么打印荣誉证书_使用Word 2010制作并打印荣誉证书的方法
- 观《五星大饭店》有感
- 数值分析常用的几个小程序C++实现
- websocket 给服务端发送太长数据处理(The decoded text message was too big for the output buffer and the endpoint )
- id门禁卡复制到手机_门禁卡复制到手机苹果
- HDMI 转换芯片——MS1836S
- 核音智言 | 数字孪生IOC,助力城市治理智能高效!
- 图情论文笔记 | 学术图书馆“十四五”规划的思考(杨新涯)