Python爬蟲(chóng)實(shí)現(xiàn)自動(dòng)登錄、簽到功能的代碼
更新 2016/8/9:最近發(fā)現(xiàn)目標(biāo)網(wǎng)站已經(jīng)屏蔽了這個(gè)登錄簽到的接口(PS:不過(guò)我還是用這個(gè)方式賺到了將近一萬(wàn)點(diǎn)積分·····)
前幾天女朋友跟我說(shuō),她在一個(gè)素材網(wǎng)站上下載東西,積分總是不夠用,積分是怎么來(lái)的呢,是每天登錄網(wǎng)站簽到獲得的,當(dāng)然也能購(gòu)買(mǎi),她不想去買(mǎi),因?yàn)榕紶柌艜?huì)用一次,但是每到用的時(shí)候就發(fā)現(xiàn)積分不夠,又記不得每天去簽到,所以就有了這個(gè)糾結(jié)的事情。怎么辦呢,想辦法唄,于是我就用python寫(xiě)了個(gè)小爬蟲(chóng),每天去自動(dòng)幫她簽到掙積分。廢話不多說(shuō),下面就講講代碼。
我這里用的是python3.4,使用python2.x的朋友如果有需要請(qǐng)繞道查看別的文章。
工具:Fiddler
首先下載安裝Fiddler,這個(gè)工具是用來(lái)監(jiān)聽(tīng)網(wǎng)絡(luò)請(qǐng)求,有助于你分析請(qǐng)求鏈接和參數(shù)。
打開(kāi)目標(biāo)網(wǎng)站:http://www.17sucai.com/,然后點(diǎn)擊登錄

好了,先別急著登錄,打開(kāi)你的Fiddler,此時(shí)Fiddler里面是沒(méi)有監(jiān)聽(tīng)到網(wǎng)絡(luò)請(qǐng)求的,然后回到頁(yè)面,輸入郵箱和密碼,點(diǎn)擊登錄,下面再到fiddler里面去看

這里面的第一個(gè)請(qǐng)求就是你點(diǎn)擊登錄的網(wǎng)絡(luò)請(qǐng)求,點(diǎn)擊這個(gè)鏈接可以在右邊看到你的一些請(qǐng)求信息

然后點(diǎn)擊WebForms可以看到你的請(qǐng)求參數(shù),也就是用戶(hù)名和密碼


下面我們有代碼來(lái)實(shí)現(xiàn)登錄功能
import urllib.request
import urllib
import gzip
import http.cookiejar
#定義一個(gè)方法用于生成請(qǐng)求頭信息,處理cookie
def getOpener(head):
# deal with the Cookies
<pre name="code" class="python"> cj = http.cookiejar.CookieJar()
pro = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(pro)
header = []
for key, value in head.items():
elem = (key, value)
header.append(elem)
opener.addheaders = header
return opener
#定義一個(gè)方法來(lái)解壓返回信息
def ungzip(data):
try: # 嘗試解壓
print('正在解壓.....')
data = gzip.decompress(data)
print('解壓完畢!')
except:
print('未經(jīng)壓縮, 無(wú)需解壓')
return data
#封裝頭信息,偽裝成瀏覽器
header = {
'Connection': 'Keep-Alive',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
'Accept-Encoding': 'gzip, deflate',
'X-Requested-With': 'XMLHttpRequest',
'Host': 'www.17sucai.com',
}
url = 'http://www.17sucai.com/auth'
opener = getOpener(header)
id = 'xxxxxxxxxxxxx'#你的用戶(hù)名
password = 'xxxxxxx'#你的密碼
postDict = {
'email': id,
'password': password,
}
postData = urllib.parse.urlencode(postDict).encode()
op = opener.open(url, postData)
data = op.read()
data = ungzip(data)
print(data)
好了,接下來(lái)清空一下你的Fiddler,然后運(yùn)行這個(gè)程序,看一下你的Fiddler

你可以點(diǎn)擊這個(gè)鏈接,看看右邊的請(qǐng)求信息和你用瀏覽器請(qǐng)求的是不是一樣
下面是程序后代打印的信息

code=200表示登陸成功
解析來(lái)就需要獲取到簽到的url,這里你需要一個(gè)沒(méi)有簽到的賬號(hào)在網(wǎng)站中點(diǎn)擊簽到按鈕,然后通過(guò)Fiddler來(lái)獲取到簽到的鏈接和需要的信息。

然后點(diǎn)擊“簽到”,簽到成功后到Fiddler中查看捕捉到的url

點(diǎn)擊這個(gè)url可以在右邊查看訪問(wèn)這個(gè)鏈接時(shí)所需要的頭信息和cookies神馬的,我們已經(jīng)登錄成功后直接使用cookies就行了,python對(duì)cookies的處理做好了封裝,下面是我的代碼中對(duì)cookies的使用
cj = http.cookiejar.CookieJar() pro = urllib.request.HTTPCookieProcessor(cj) opener = urllib.request.build_opener(pro)
下面是簽到成功返回的信息:code=200表示請(qǐng)求成功,day=1表示連續(xù)簽到一天,score=20表示獲得的積分?jǐn)?shù)

下面放出完整代碼,當(dāng)然,為了測(cè)試代碼簽到,你還需要你一沒(méi)有簽到過(guò)的賬號(hào)
import urllib.request
import urllib
import gzip
import http.cookiejar
def getOpener(head):
# deal with the Cookies
cj = http.cookiejar.CookieJar()
pro = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(pro)
header = []
for key, value in head.items():
elem = (key, value)
header.append(elem)
opener.addheaders = header
return opener
def ungzip(data):
try: # 嘗試解壓
print('正在解壓.....')
data = gzip.decompress(data)
print('解壓完畢!')
except:
print('未經(jīng)壓縮, 無(wú)需解壓')
return data
header = {
'Connection': 'Keep-Alive',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
'Accept-Encoding': 'gzip, deflate',
'X-Requested-With': 'XMLHttpRequest',
'Host': 'www.17sucai.com',
}
url = 'http://www.17sucai.com/auth'
opener = getOpener(header)
id = 'xxxxxxx'
password = 'xxxxxxx'
postDict = {
'email': id,
'password': password,
}
postData = urllib.parse.urlencode(postDict).encode()
op = opener.open(url, postData)
data = op.read()
data = ungzip(data)
print(data)
url = 'http://www.17sucai.com/member/signin' #簽到的地址
op = opener.open(url)
data = op.read()
data = ungzip(data)
print(data)
相比登錄,簽到也就是在登錄完成后重新打開(kāi)一個(gè)鏈接而已,由于我的賬號(hào)都已經(jīng)簽到過(guò)了,這里就不在貼運(yùn)行代碼的圖 了。
接下來(lái)要做的就是在你電腦上寫(xiě)個(gè)bat 腳本,再在“任務(wù)計(jì)劃”中添加一個(gè)定時(shí)任務(wù)就行了。

在此之前你還需要配置一下python的環(huán)境變量,這里就不在贅述了。

到此這篇關(guān)于Python爬蟲(chóng)實(shí)現(xiàn)自動(dòng)登錄、簽到功能的代碼的文章就介紹到這了,更多相關(guān)Python爬蟲(chóng)實(shí)現(xiàn)自動(dòng)登錄、簽到內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 如何基于Python爬蟲(chóng)爬取美團(tuán)酒店信息
- 10個(gè)python爬蟲(chóng)入門(mén)實(shí)例(小結(jié))
- python 爬蟲(chóng)如何正確的使用cookie
- python 爬蟲(chóng)基本使用——統(tǒng)計(jì)杭電oj題目正確率并排序
- python 如何使用find和find_all爬蟲(chóng)、找文本的實(shí)現(xiàn)
- Python爬蟲(chóng)代理池搭建的方法步驟
- python如何提升爬蟲(chóng)效率
- python爬蟲(chóng)構(gòu)建代理ip池抓取數(shù)據(jù)庫(kù)的示例代碼
- python爬蟲(chóng)爬取網(wǎng)頁(yè)數(shù)據(jù)并解析數(shù)據(jù)
- Python 通過(guò)爬蟲(chóng)實(shí)現(xiàn)GitHub網(wǎng)頁(yè)的模擬登錄的示例代碼
- Python爬蟲(chóng)防封ip的一些技巧
- Python爬蟲(chóng)爬取微信朋友圈
- python爬蟲(chóng)使用requests發(fā)送post請(qǐng)求示例詳解
- python爬蟲(chóng)使用正則爬取網(wǎng)站的實(shí)現(xiàn)
- Python爬蟲(chóng)獲取豆瓣電影并寫(xiě)入excel
- Python3爬蟲(chóng)關(guān)于識(shí)別點(diǎn)觸點(diǎn)選驗(yàn)證碼的實(shí)例講解
- Selenium結(jié)合BeautifulSoup4編寫(xiě)簡(jiǎn)單的python爬蟲(chóng)
相關(guān)文章
python測(cè)試框架unittest和pytest區(qū)別
這篇文章主要介紹了python測(cè)試框架unittest和pytest區(qū)別,幫助大家更好的理解和學(xué)習(xí)使用python進(jìn)行自動(dòng)化測(cè)試,感興趣的朋友可以了解下2021-04-04
Tensorflow2.1實(shí)現(xiàn)文本中情感分類(lèi)實(shí)現(xiàn)解析
這篇文章主要為大家介紹了Tensorflow2.1實(shí)現(xiàn)文本中情感分類(lèi)實(shí)現(xiàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
吳恩達(dá)機(jī)器學(xué)習(xí)練習(xí):SVM支持向量機(jī)
這篇文章主要為我們帶來(lái)了吳恩達(dá)機(jī)器學(xué)習(xí)的一個(gè)練習(xí):SVM支持向量機(jī),通過(guò)本次練習(xí)相信你能對(duì)機(jī)器學(xué)習(xí)深入更進(jìn)一步,需要的朋友可以參考下2021-04-04
嘗試用最短的Python代碼來(lái)實(shí)現(xiàn)服務(wù)器和代理服務(wù)器
"人生苦短、我用Python",Python最大的特點(diǎn)便是代碼簡(jiǎn)潔,得益于Python自帶的wsgiref包和socket模塊,這里我們將嘗試用最短的Python代碼來(lái)實(shí)現(xiàn)服務(wù)器和代理服務(wù)器:2016-06-06
Python回調(diào)函數(shù)用法實(shí)例詳解
這篇文章主要介紹了Python回調(diào)函數(shù)用法,以實(shí)例形式較為詳細(xì)的分析了Python回調(diào)函數(shù)的定義、功能及相關(guān)使用技巧,需要的朋友可以參考下2015-07-07
python中shapefile庫(kù)讀取shapefile文件信息
本文主要介紹了python中shapefile庫(kù)讀取shapefile文件信息,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
python?服務(wù)器批處理得到PSSM矩陣的問(wèn)題
這篇文章主要介紹了python?服務(wù)器批處理得到PSSM矩陣,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
Python實(shí)現(xiàn)?MK檢驗(yàn)示例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)?MK檢驗(yàn),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
淺談配置MMCV環(huán)境,解決報(bào)錯(cuò),版本不匹配問(wèn)題
這篇文章主要介紹了淺談配置MMCV環(huán)境,解決報(bào)錯(cuò),版本不匹配問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04

