欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python腳本實(shí)現(xiàn)蝦米網(wǎng)簽到功能

 更新時(shí)間:2016年04月12日 11:45:44   作者:liushuaikobe  
這篇文章主要介紹了Python腳本實(shí)現(xiàn)蝦米網(wǎng)簽到功能的方法,涉及Python調(diào)用URL模塊實(shí)現(xiàn)數(shù)據(jù)傳輸與處理的相關(guān)技巧,需要的朋友可以參考下

本文實(shí)例講述了Python腳本實(shí)現(xiàn)蝦米網(wǎng)簽到功能的方法。分享給大家供大家參考,具體如下:

概述

這個(gè)腳本完成了自動(dòng)登錄蝦米網(wǎng)、簽到的功能。

大致要用到urllib、urllib2、cookielib這幾個(gè)模塊。其實(shí)就是用python實(shí)現(xiàn)向指定的url去post數(shù)據(jù)。

至于我怎么知道在瀏覽器里面登錄和簽到時(shí)瀏覽器都向服務(wù)器post了什么數(shù)據(jù)的問題,可以用強(qiáng)大的chrome:F12->Network里面可以看得到。有的服務(wù)器登錄成功后會(huì)讓客戶端瀏覽器跳轉(zhuǎn)或者立即刷新一次頁面等等,會(huì)把登錄時(shí)向服務(wù)器post的數(shù)據(jù)刷沒掉,那么就要用到強(qiáng)大的抓包軟件——WireShark來分析。比如用chrome:

然后就可以寫了,構(gòu)造Request Headers和要Post的Data(就是Chrome里的Form Data),ID和Pwd是明文傳輸,呵呵。

代碼

下面是代碼:

# -*- coding: cp936 -*-
'''''
Created on 2012-11-15
@author: liushuai
'''
import urllib, urllib2, cookielib, sys
class LoginXiami:
  login_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4'}
  signin_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4', 'X-Requested-With':'XMLHttpRequest', 'Content-Length':0, 'Origin':'http://www.xiami.com', 'Referer':'http://www.xiami.com/'}
  email = ''
  password = ''
  cookie = None
  cookieFile = './cookie.dat'
  def __init__(self, email, pwd):
    self.email = email
    self.password = pwd
    self.cookie = cookielib.LWPCookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookie))
    urllib2.install_opener(opener)
  def login(self):
    postdata = {'email':self.email, 'password':self.password, 'done':'http://www.xiami.com', 'submit':'%E7%99%BB+%E5%BD%95'}
    postdata = urllib.urlencode(postdata)
    print 'Logining...'
    req = urllib2.Request(url='http://www.xiami.com/member/login', data=postdata, headers=self.login_header)
    result = urllib2.urlopen(req).read()
    self.cookie.save(self.cookieFile)
    result = str(result).decode('utf-8').encode('gbk')
    if 'Email 或者密碼錯(cuò)誤' in result:
      print 'Login failed due to Email or Password error...'
      sys.exit()
    else :
      print 'Login successfully!'
  def signIn(self):
    postdata = {}
    postdata = urllib.urlencode(postdata)
    print 'signing...'
    req = urllib2.Request(url='http://www.xiami.com/task/signin', data=postdata, headers=self.signin_header)
    result = urllib2.urlopen(req).read()
    result = str(result).decode('utf-8').encode('gbk')
    self.cookie.save(self.cookieFile)
    try:
      result = int(result)
    except ValueError:
      print 'signing failed...'
      sys.exit()
    except:
      print 'signing failed due to unknown reasons ...'
      sys.exit()
    print 'signing successfully!'
    print self.email,'have signed', result, 'days continuously...'
if __name__ == '__main__':
  user = LoginXiami('你的登錄郵箱', '你的密碼')
  user.login()
  user.signIn()

然后運(yùn)行一下腳本就可以登錄、簽到了。

后記

有的Discuz!論壇據(jù)說是為了防止用戶用網(wǎng)頁之外的途徑向服務(wù)器post數(shù)據(jù),服務(wù)器在每個(gè)用戶每次登錄成功后生成一個(gè)叫formhash的值,作為表單的隱藏域返回給客戶端(服務(wù)端也有保存)。

客戶端在向服務(wù)器post數(shù)據(jù)的時(shí)候,這個(gè)值會(huì)作為表單的一項(xiàng)數(shù)據(jù)“神不知鬼不覺”(因?yàn)槭潜韱蔚碾[藏域)地一同post過去,服務(wù)端收到客戶端的post請(qǐng)求后,和服務(wù)端的formhash值作對(duì)比,就能知道是否是通過瀏覽器頁面的方式post的數(shù)據(jù)了。

不過如果真的是為了防止這,這個(gè)做法真的有用嗎?我試了一下,只需用簡(jiǎn)單的正則分析下登錄成功返回的html,找到formhash值,再用上述方法和理論post過去即可,成功的完成了簽到的功能。

反正不管怎么說,就是用腳本“假裝”地完成了一下用瀏覽器登錄并簽到的過程。
:由于網(wǎng)站可能進(jìn)行改版或升級(jí),那么向服務(wù)器中post的數(shù)據(jù)可能會(huì)有變化,那么就要對(duì)代碼進(jìn)行相應(yīng)調(diào)整,故代碼僅供研究和學(xué)習(xí)參考之用。

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • python實(shí)現(xiàn)畫循環(huán)圓

    python實(shí)現(xiàn)畫循環(huán)圓

    今天小編就為大家分享一篇python實(shí)現(xiàn)畫循環(huán)圓,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Pycharm安裝Qt Design快捷工具的詳細(xì)教程

    Pycharm安裝Qt Design快捷工具的詳細(xì)教程

    這篇文章主要介紹了Pycharm安裝Qt Design快捷工具,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • pycharm開發(fā)一個(gè)簡(jiǎn)單界面和通用mvc模板(操作方法圖解)

    pycharm開發(fā)一個(gè)簡(jiǎn)單界面和通用mvc模板(操作方法圖解)

    這篇文章主要介紹了pycharm開發(fā)最簡(jiǎn)單的界面和通用mvc模板的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • python獲取mp3文件信息的方法

    python獲取mp3文件信息的方法

    這篇文章主要介紹了python獲取mp3文件信息的方法,涉及Python針對(duì)文件屬性操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • python實(shí)現(xiàn)比較兩段文本不同之處的方法

    python實(shí)現(xiàn)比較兩段文本不同之處的方法

    這篇文章主要介紹了python實(shí)現(xiàn)比較兩段文本不同之處的方法,涉及Python針對(duì)文本與字符串的相關(guān)操作技巧,需要的朋友可以參考下
    2015-05-05
  • Python中的各種裝飾器解析

    Python中的各種裝飾器解析

    這篇文章主要介紹了Python中的各種裝飾器解析,Python裝飾器可以在不改變函數(shù)原實(shí)現(xiàn)方式的前提下,為函數(shù)添加額外的功能,需要的朋友可以參考下
    2023-11-11
  • 在Python中利用pickle保存變量的實(shí)例

    在Python中利用pickle保存變量的實(shí)例

    今天小編就為大家分享一篇在Python中利用pickle保存變量的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 分析python請(qǐng)求數(shù)據(jù)

    分析python請(qǐng)求數(shù)據(jù)

    這篇文章我們給大家整理了關(guān)于python請(qǐng)求數(shù)據(jù)的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣和需要的朋友們可以學(xué)習(xí)下。
    2018-08-08
  • 一次性徹底講透Python中pd.concat與pd.merge

    一次性徹底講透Python中pd.concat與pd.merge

    本文主要介紹了一次性徹底講透Python中pd.concat與pd.merge,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • python監(jiān)控文件并且發(fā)送告警郵件

    python監(jiān)控文件并且發(fā)送告警郵件

    這篇文章主要為大家詳細(xì)介紹了python監(jiān)控文件,并且發(fā)送告警郵件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06

最新評(píng)論