最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

概述

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

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

至于我怎么知道在瀏覽器里面登錄和簽到時瀏覽器都向服務器post了什么數(shù)據(jù)的問題,可以用強大的chrome:F12->Network里面可以看得到。有的服務器登錄成功后會讓客戶端瀏覽器跳轉(zhuǎn)或者立即刷新一次頁面等等,會把登錄時向服務器post的數(shù)據(jù)刷沒掉,那么就要用到強大的抓包軟件——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 或者密碼錯誤' 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()

然后運行一下腳本就可以登錄、簽到了。

后記

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

客戶端在向服務器post數(shù)據(jù)的時候,這個值會作為表單的一項數(shù)據(jù)“神不知鬼不覺”(因為是表單的隱藏域)地一同post過去,服務端收到客戶端的post請求后,和服務端的formhash值作對比,就能知道是否是通過瀏覽器頁面的方式post的數(shù)據(jù)了。

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

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

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

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

相關(guān)文章

  • python創(chuàng)建與遍歷二叉樹的方法實例

    python創(chuàng)建與遍歷二叉樹的方法實例

    這篇文章主要給大家介紹了關(guān)于python創(chuàng)建與遍歷二叉樹的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 詳解python時間模塊中的datetime模塊

    詳解python時間模塊中的datetime模塊

    這篇文章主要為大家介紹了python時間模塊中的datetime模塊,datetime模塊的接口則更直觀、更容易調(diào)用,想要了解datetime模塊的朋友可以參考一下
    2016-01-01
  • python 辦公自動化——基于pyqt5和openpyxl統(tǒng)計符合要求的名單

    python 辦公自動化——基于pyqt5和openpyxl統(tǒng)計符合要求的名單

    前幾天接到的一個需求,因為學校給的名單是青年大學習已學習的名單,然而要知道未學習的名單只能從所有團員中再排查一次,過程相當麻煩。剛好我也學過一些操作辦公軟件的基礎(chǔ),再加上最近在學pyqt5,所以我決定用python寫個自動操作文件的腳本給她用用。
    2021-05-05
  • Python-基礎(chǔ)-入門 簡介

    Python-基礎(chǔ)-入門 簡介

    這篇文章主要介紹了Python-基礎(chǔ)-簡介入門的相關(guān)資料,需要的朋友可以參考下
    2014-08-08
  • Python編程實現(xiàn)生成特定范圍內(nèi)不重復多個隨機數(shù)的2種方法

    Python編程實現(xiàn)生成特定范圍內(nèi)不重復多個隨機數(shù)的2種方法

    這篇文章主要介紹了Python編程實現(xiàn)生成特定范圍內(nèi)不重復多個隨機數(shù)的2種方法,涉及Python基于random生成隨機數(shù)的常見操作技巧,需要的朋友可以參考下
    2017-04-04
  • python scrapy腳本報錯問題及解決

    python scrapy腳本報錯問題及解決

    這篇文章主要介紹了python scrapy腳本報錯問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python?selenium模擬點擊問題解決方案

    python?selenium模擬點擊問題解決方案

    這篇文章主要介紹了python?selenium模擬點擊問題,涉及到安裝谷歌瀏覽器和瀏覽器驅(qū)動的相關(guān)知識介紹,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • 創(chuàng)建SparkSession和sparkSQL的詳細過程

    創(chuàng)建SparkSession和sparkSQL的詳細過程

    SparkSession 是 Spark SQL 的入口,Builder 是 SparkSession 的構(gòu)造器。 通過 Builder, 可以添加各種配置,并通過 stop 函數(shù)來停止 SparkSession,本文給大家分享創(chuàng)建SparkSession和sparkSQL的詳細過程,一起看看吧
    2021-08-08
  • Python基于Streamlit實現(xiàn)音頻處理示例詳解

    Python基于Streamlit實現(xiàn)音頻處理示例詳解

    這篇文章主要為大家詳細介紹了如何基于Streamlit實現(xiàn)的音頻處理,包含錄音,語音轉(zhuǎn)文本,文件下載和進度顯示功能,有需要的小伙伴可以參考一下
    2025-03-03
  • Pandas中常用的七個時間戳處理函數(shù)使用總結(jié)

    Pandas中常用的七個時間戳處理函數(shù)使用總結(jié)

    在零售、經(jīng)濟和金融等行業(yè),數(shù)據(jù)總是由于貨幣和銷售而不斷變化,生成的所有數(shù)據(jù)都高度依賴于時間。如果這些數(shù)據(jù)沒有時間戳或標記,實際上很難管理所有收集的數(shù)據(jù)。本文為大家準備了Pandas中常用的七個時間戳處理函數(shù),需要的可以參考一下
    2022-04-04

最新評論

淮安市| 高碑店市| 文水县| 白银市| 邵阳市| 大姚县| 灵寿县| 西宁市| 鄂伦春自治旗| 修武县| 邵东县| 龙泉市| 新密市| 海伦市| 武汉市| 托克托县| 大同县| 南丹县| 丰顺县| 宜州市| 厦门市| 静海县| 郴州市| 东阳市| 万全县| 德庆县| 呼伦贝尔市| 右玉县| 靖边县| 利津县| 霍林郭勒市| 乃东县| 浦城县| 江华| 义马市| 台北市| 平度市| 彰化市| 开封县| 江北区| 晋州市|