学习笔记(2):模拟登陆抽屉网(ajax)
生活随笔
收集整理的這篇文章主要介紹了
学习笔记(2):模拟登陆抽屉网(ajax)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
import requests'''
目的:模擬登陸抽屜網(wǎng)
工具:python3
所用模塊:requests ----->模擬瀏覽器的請求,并且得到返回消息'''# 1.登陸地址的獲取:
# 抽屜網(wǎng)的登陸頁面并不是刷新整個頁面,屬于ajax局部請求,要首先找到登陸地址,手工模擬登陸,輸入錯誤信息
# 在network中,出現(xiàn)了login項(xiàng),點(diǎn)開發(fā)現(xiàn)頁面請求 Request URL: https://dig.chouti.com/login
# 于是乎知道了登陸地址,然后下拉找到請求體,里面包含了我們輸入的錯誤的登陸信息。# 2.獲取cookie:
# 要想獲得網(wǎng)站信任,還必須拿到服務(wù)器給我們的cookie,而且是被網(wǎng)站授權(quán)的,輸入正確登陸信息,登陸信息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', #注意,按照登陸格式,手機(jī)號前面加上86,且為字符串格式'password':'1234556','oneMonth': 1}
)
cook = resp.cookies.get_dict() #拿到被授權(quán)的cookies,resp.cookies 返回的是一個對象,它的方法get_dict()得到cookies字典
print(cook)
print(resp.status_code) #狀態(tài)碼 200 訪問成功# 3.我們拿到被授權(quán)信任的cookies后就可以繞開登陸,直接進(jìn)入自己的個人頁面,比如說 我的錢包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)#結(jié)果返回文本的標(biāo)題是404,但訪問狀態(tài)卻是200,說明被拒絕了訪問,但是我們的確是通過輸入正確的密碼得到了被授權(quán)的cookies
#不應(yīng)該被拒絕訪問的,大部分網(wǎng)站的確如此。# 4.排錯:
# 網(wǎng)站大多都是依賴cookies識別用戶的,而我們的確是通過輸入正確的信息得到了cookies,但卻失敗了,
# 說明cookies還是出問題了。cookies字典里面有很多項(xiàng),其中一個必然是必要的,我們要在正確的登陸狀態(tài)下,將
# 這個字典鍵找出來。輸入正確的登陸信息進(jìn)入網(wǎng)站,找到文章列表,找到文章的推薦點(diǎn)贊選項(xiàng),隨機(jī)點(diǎn)一個,然后分析鏈接的去處得到
# https://dig.chouti.com/link/vote?linksId=19901931,然后再在請求體里面找到cookies字典,一個個實(shí)驗(yàn)里面的選項(xiàng)。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)#注意運(yùn)行前請先將之前的代碼注釋!
#結(jié)果如下
#{"result":{"code":"9999", "message":"推薦成功", "data":{"jid":"cdu_52741899231","likedTime":"1527689471149000","lvCount":"50","nick":"哈羅","uvCount":"3","voteTime":"小于1分鐘前"}}}
#推薦成功!
#說明這個gpsd是最重要的,其它不重要,只要通過這個就可以免登陸了。
#然后我們再次運(yùn)行第二步里面的代碼得到的cookies值,發(fā)現(xiàn)登陸首頁gpsd選項(xiàng)根本不一樣,說明我們按照正確登陸方式獲取的cookies沒被授權(quán),那現(xiàn)在這個正確的cooies
#又是從哪里來的呢?
#我們忽略了一步,我們是直接進(jìn)入登陸url的,即https://dig.chouti.com/login,但是正常的順序應(yīng)該是先登陸首頁,再進(jìn)入登陸頁面,正確的cookies也只能在這一步
#產(chǎn)生了;
#如果真如我們分析一樣,流程大體如下:
#登陸網(wǎng)站首頁 ---> 獲取了一個cookies1 ----> 再進(jìn)入登陸頁面輸入正確的登陸信息 -----> 獲取了我們以為已經(jīng)被授權(quán)的cookies2,
#但其實(shí)這里面被動了手腳,真正被信任的還是cookies1里面的gpsd,登陸那一步,只是為了讓這個gpsd得到網(wǎng)站的授權(quán)。
#可以進(jìn)行實(shí)驗(yàn)。#將第二步正確登陸獲得的gpsd替換掉第4步的gpsd(請先將之前的點(diǎn)贊給取消掉!將第三步代碼注釋掉)
#發(fā)現(xiàn)訪問失敗。
#所以我們要得到登陸首頁的gpsd,然后攜帶這個gpsd正確登陸,使這個gpsd得到網(wǎng)站信任。# 5.正確流程如下:(運(yùn)行時請注釋上面代碼)# 一,登陸首頁,獲取第一個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)# 三,可以利用已經(jīng)被授權(quán)的cookies的gpsd進(jìn)行點(diǎn)贊操作
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)
總結(jié)
以上是生活随笔為你收集整理的学习笔记(2):模拟登陆抽屉网(ajax)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京心理测试软件公司,Inquisit
- 下一篇: js数字滚动功能实现