Python爬蟲實現自動登入、簽到__Python

來源:互聯網
上載者:User

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

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

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

       工具:Fiddler

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

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



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




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




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




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


import urllib.requestimport urllibimport gzipimport http.cookiejar#定義一個方法用於產生要求標頭資訊,處理cookiedef 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 

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

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

code=200表示登陸成功

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

然後點擊“簽到”,簽到成功後到Fiddler中查看捕捉到的url

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

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

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


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


import urllib.requestimport urllibimport gzipimport http.cookiejardef 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 openerdef ungzip(data):    try:        # 嘗試解壓        print('正在解壓.....')        data = gzip.decompress(data)        print('解壓完畢!')    except:        print('未經壓縮, 無需解壓')    return dataheader = {    '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)

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



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


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



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.