1. 程式人生 > 程式設計 >Python爬蟲實現自動登入、簽到功能的程式碼

Python爬蟲實現自動登入、簽到功能的程式碼

更新 2016/8/9:最近發現目標網站已經遮蔽了這個登入簽到的介面(PS:不過我還是用這個方式賺到了將近一萬點積分·····)

前幾天女朋友跟我說,她在一個素材網站上下載東西,積分總是不夠用,積分是怎麼來的呢,是每天登入網站簽到獲得的,當然也能購買,她不想去買,因為偶爾才會用一次,但是每到用的時候就發現積分不夠,又記不得每天去簽到,所以就有了這個糾結的事情。怎麼辦呢,想辦法唄,於是我就用python寫了個小爬蟲,每天去自動幫她簽到掙積分。廢話不多說,下面就講講程式碼。

我這裡用的是python3.4,使用python2.x的朋友如果有需要請繞道檢視別的文章。

工具:Fiddler

首先下載安裝Fiddler,這個工具是用來監聽網路請求,有助於你分析請求連結和引數。

開啟目標網站:http://www.17sucai.com/,然後點選登入

Python爬蟲實現自動登入、簽到功能的程式碼

好了,先別急著登入,開啟你的Fiddler,此時Fiddler裡面是沒有監聽到網路請求的,然後回到頁面,輸入郵箱和密碼,點選登入,下面再到fiddler裡面去看

Python爬蟲實現自動登入、簽到功能的程式碼

這裡面的第一個請求就是你點選登入的網路請求,點選這個連結可以在右邊看到你的一些請求資訊

Python爬蟲實現自動登入、簽到功能的程式碼

然後點選WebForms可以看到你的請求引數,也就是使用者名稱和密碼

Python爬蟲實現自動登入、簽到功能的程式碼

Python爬蟲實現自動登入、簽到功能的程式碼

下面我們有程式碼來實現登入功能

import urllib.request
import urllib
import gzip
import http.cookiejar
 
#定義一個方法用於生成請求頭資訊,處理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
 
#定義一個方法來解壓返回資訊
def ungzip(data):
 try:  # 嘗試解壓
  print('正在解壓.....')
  data = gzip.decompress(data)
  print('解壓完畢!')
 except:
  print('未經壓縮,無需解壓')
 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'#你的使用者名稱
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)

好了,接下來清空一下你的Fiddler,然後執行這個程式,看一下你的Fiddler

Python爬蟲實現自動登入、簽到功能的程式碼

你可以點選這個連結,看看右邊的請求資訊和你用瀏覽器請求的是不是一樣

下面是程式後代列印的資訊

Python爬蟲實現自動登入、簽到功能的程式碼

code=200表示登陸成功

解析來就需要獲取到簽到的url,這裡你需要一個沒有簽到的賬號在網站中點選簽到按鈕,然後通過Fiddler來獲取到簽到的連結和需要的資訊。

Python爬蟲實現自動登入、簽到功能的程式碼

然後點選“簽到”,簽到成功後到Fiddler中檢視捕捉到的url

Python爬蟲實現自動登入、簽到功能的程式碼

點選這個url可以在右邊檢視訪問這個連結時所需要的頭資訊和cookies神馬的,我們已經登入成功後直接使用cookies就行了,python對cookies的處理做好了封裝,下面是我的程式碼中對cookies的使用

cj = http.cookiejar.CookieJar()
 pro = urllib.request.HTTPCookieProcessor(cj)
 opener = urllib.request.build_opener(pro)

下面是簽到成功返回的資訊:code=200表示請求成功,day=1表示連續簽到一天,score=20表示獲得的積分數

Python爬蟲實現自動登入、簽到功能的程式碼

下面放出完整程式碼,當然,為了測試程式碼簽到,你還需要你一沒有簽到過的賬號

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)
  header.append(elem)
 opener.addheaders = header
 return opener
 
def ungzip(data):
 try:  # 嘗試解壓
  print('正在解壓.....')
  data = gzip.decompress(data)
  print('解壓完畢!')
 except:
  print('未經壓縮,無需解壓')
 return data
 
 
header = {
 'Connection': 'Keep-Alive',}
 
 
url = 'http://www.17sucai.com/auth'
opener = getOpener(header)
 
id = 'xxxxxxx'
password = 'xxxxxxx'
postDict = {
  'email': id,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)

相比登入,簽到也就是在登入完成後重新開啟一個連結而已,由於我的賬號都已經簽到過了,這裡就不在貼執行程式碼的圖 了。

接下來要做的就是在你電腦上寫個bat 指令碼,再在“任務計劃”中新增一個定時任務就行了。

Python爬蟲實現自動登入、簽到功能的程式碼

在此之前你還需要配置一下python的環境變數,這裡就不在贅述了。

Python爬蟲實現自動登入、簽到功能的程式碼

到此這篇關於Python爬蟲實現自動登入、簽到功能的程式碼的文章就介紹到這了,更多相關Python爬蟲實現自動登入、簽到內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!