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