1. 程式人生 > >Python模擬微博登陸,親測有效

Python模擬微博登陸,親測有效

開發十年,就只剩下這套架構體系了! >>>   

python爬蟲

今天想做一個微博爬個人頁面的工具,滿足一些不可告人的祕密。那麼首先就要做那件必做之事!模擬登陸……

程式碼是參考了:https://www.douban.com/note/201767245/

我對程式碼進行了優化,重構成了Python 3.6 版本,並且加入了大量註釋方便大家學習。

PC 登入新浪微博時, 在客戶端用js預先對使用者名稱、密碼都進行了加密, 而且在POST之前會GET 一組引數,這也將作為POST_DATA 的一部分。 這樣, 就不能用通常的那種簡單方法來模擬POST 登入( 比如 人人網 )。

1.

在提交POST請求之前, 需要GET 獲取兩個引數。 地址是:

http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.18)

得到的資料中有 servertime 和 nonce 的值, 是隨機的,其他值貌似沒什麼用。

def get_servertime():
   url = 'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=dW5kZWZpbmVk&client=ssologin.js(v1.3.18)&_=1329806375939'
   # 返回出來的是一個Response物件,無法直接獲取,text後,可以通過正則匹配到
   # 大概長這樣子的:sinaSSOController.preloginCallBack({"retcode":0,"servertime":1545606770, ...})
   data = requests.request('GET', url).text
   p = re.compile('\((.*)\)')
   try:
       json_data = p.search(data).group(1)
       data = json.loads(json_data)
       servertime = str(data['servertime'])
       nonce = data['nonce']
       return servertime, nonce
   except:
       print('獲取 severtime 失敗!')
       return None

2.

通過httpfox 觀察POST 的資料, 引數較複雜,其中 “su" 是加密後的username, sp 是加密後的password。servertime 和 nonce 是上一步得到的。其他引數是不變的。

username 經過了BASE64 計算:

username = base64.encodestring( urllib.quote(username) )[:-1]

password 經過了三次SHA1 加密, 且其中加入了 servertime 和 nonce 的值來干擾。 即: 兩次SHA1加密後, 將結果加上 servertime 和 nonce 的值, 再SHA1 算一次。

def get_pwd(pwd, servertime, nonce):
   # 第一次計算,注意Python3 的加密需要encode,使用bytes
   pwd1 = hashlib.sha1(pwd.encode()).hexdigest()
   # 使用pwd1的結果在計算第二次
   pwd2 = hashlib.sha1(pwd1.encode()).hexdigest()
   # 使用第二次的結果再加上之前計算好的servertime和nonce值,hash一次
   pwd3_ = pwd2 + servertime + nonce
   pwd3 = hashlib.sha1(pwd3_.encode()).hexdigest()
   return pwd3


def get_user(username):
   # 將@符號轉換成url中能夠識別的字元
   _username = urllib.request.quote(username)
   # Python3中的base64計算也是要位元組
   # base64出來後,最後有一個換行符,所以用了切片去了最後一個字元
   username = base64.encodebytes(_username.encode())[:-1]
   return username

3.

將引數組織好, POST請求。 這之後還沒有登入成功。

POST後得到的內容中包含一句:

location.replace("http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&retcode=101&reason=%B5%C7%C2%BC%C3%FB%BB%F2%C3%DC%C2%EB%B4%ED%CE%F3")

這是登入失敗時的結果, 登入成功後結果與之類似, 不過retcode 的值是0 。

接下來再請求這個URL,這樣就成功登入到微博了。 記得要提前build 快取。

python自動登陸

關注公眾號「Python專欄」,後臺回覆「模擬微博登陸」,獲取全套微博自動登陸程式碼。

Pyth   
 
 </div> 
 <div class=

相關推薦

Python 模擬登陸有效

今天想做一個微博爬個人頁面的工具,滿足一些不可告人的祕密。那麼首先就要做那件必做之事!模擬登陸…… 程式碼是參考了:https://www.douban.com/note/201767245/,我對程式碼進行了優化,重構成了Python 3.6 版本,並且加入了大

Python模擬登陸有效

開發十年,就只剩下這套架構體系了! >>>   

java swing 製作一個登陸介面有效

一、介紹 Swing 是一個為Java設計的GUI工具包。 Swing是JAVA基礎類的一部分。 Swing包括了圖形使用者介面(GUI)器件如:文字框,按鈕,分隔窗格和表。 Swing提供許多比AWT更好的螢幕顯示元素。它們用純Java寫成,所以同Java本身一樣可以跨平臺執行,這一點不像AWT。它

Python模擬抽獎機制!中獎十個九個半女生?自動統計男女比例

今天來寫一個自動計算微博抽獎男女比例的程式碼,很早就應該發這篇了,只是不想蹭熱點(才不是拖更)。 整個的過程大概分為三步: S1:從抽獎公示頁獲取所有中獎者的微博ID S2:由每個中獎者的微博ID進入其相應主頁,獲得需要的個人資訊(性別、粉絲數、微博數等) S3:對收集到的資訊進行相

Ubuntu 下的Python開發 mysqlclient安裝失敗問題解決有效

版本資訊: elementoryOS 5 (基於Ubuntu18) Python3.6 遇到的問題: 在虛擬環境中安裝mysqlclient, pip install mysqlclient 出現了以下錯誤: Collecting mysqlclient Using cached

手把手教你用一個二維碼搞定信防封有效

今天要分享的是用一個二維碼成功實現微信防封的經驗,別不信,已經有不少人都用過了。 適合人群:擔心自己的微訊號、微信群被封的人群,比如做微商、代理、淘寶客的群主。 目標:幫助這部分人群避免被封號封群。 其實,這個防封的原理和過程很簡單,就是把風險轉移出去,不在微信裡涉及敏感話題內容。

Python-OpenCv】module 'cv2.cv2' has no attribute 'xfeatures2d'(問題已解決有效!)

一、問題 module 'cv2.cv2' has no attribute 'xfeatures2d' 二、原因 該演算法已經申請專利,開源OpenCV沒有版權,新的OpenCV去掉了這個演算法。   三、解決方案 1、推薦解決辦法 pip uninsta

目標檢測必須要OpenCV?10行Python程式碼也能實現好用!

短短10行程式碼就可以實現目標檢測?!本文作者和他的團隊構建了一個名為ImageAI 的Python庫,集成了現今流行的深度學習框架和計算機視覺庫。本文將手把手教你構建自己的第一個目標檢測應用,而且文摘菌已經幫你踩過坑了,親測有效!無人超市、人臉識別、無人駕駛,眾多的使用場景

windows server 2008 r2激活工具有效

framework windows server 2008 激活 激活 此工具名為:Re-Loader Activator,支持一鍵激活Office/Windows/Windows Server所有版本,參考鏈接:http://www.uusofts.com/soft/xitonggongju/r

Ubuntu 16.04安裝CrossOver容器來安裝QQ(終極解決辦法有效

bsp 所有 執行 ims class ttf 執行權限 cnblogs helper 註意:此方法能完美解決這篇文章http://www.cnblogs.com/EasonJim/p/7118693.html的所有問題,且不影響現在系統的任何功能,可以說是相當的完美。

兼容IE文本控制兩行多余省略有效

con ons bre wid mar abs lamp 技術分享 vertica   正常情況下,都會使用 -webkit-line-clamp:2; p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Cons

【轉】Fragment對用戶可見的判斷實踐有效

有一個 跳轉 orm from defaults 才會 over als class 概述 相信很多使用過 Fragment 的朋友都對判斷 Fragment 是否對用戶可見有此疑問,網上有很多文章也介紹得比較片面,只覆蓋到了其中一種情況。我在項目中也有遇到這樣的

Github網站css加載不出來的處理方法(轉有效)

github 沒有 tro 谷歌 use window mil end spa 轉載鏈接:https://blog.csdn.net/qq_36589706/article/details/80573008因為工作需求,自己會經常使用到github,但是突然有一天打開git

2018.2.5 IDEA 註冊碼啟用辦法有效

轉: https://blog.csdn.net/halen001/article/details/81137092 裝了一個比較新的idea,試用了網上的很多註冊碼,都沒有效果,最後按照一篇博主的文章,終於成功了! 1.下載補丁 idea 2018.2.5安裝包和補丁 連結:h

elasticsearch 5.6.7線上安裝ik分詞有效

官網的線上安裝命令  ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-anal

雜事纏身總分神不妨試試番茄鍾有效

10月26日上午,我準備集中精力寫上週的薦書文。於是,我就離開電腦,坐到客廳的茶几邊上,攤開《贏在下班後》這本書和幾張A4紙,準備學習。 恰好,我媳婦前兩天拿回家一包紅棗片,吃起來脆脆香香硬硬甜甜,很有口感。我隨手就抓出一把,放在旁邊,看兩眼書,摸兩片棗幹吃。 棗片在

Ubuntu16.04下配置Anaconda啟動spyder搜狗輸入法安裝有效

主要問題:安裝和虛擬環境設定同win,可直接在Anaconda Navigator的home目錄下中虛擬環境下開啟相應的Spyder編譯器。 搜狗輸入法安裝 轉載: http://www.it610.com/article/5319575.htm 開啟f

CentOS7 安裝 nginx 【超級簡單有效

說明: 這篇部落格,主要是補充一下,下面這個部落格的,也順便讓自己做一下筆記。最後可以讓你輕鬆安裝 nginx 成功  部落格原地址   https://blog.csdn.net/wxyjuly/article/details/79443432 安裝

重啟vcenter後導致vclient無法連線也無法手動啟動vcenter服務(轉有效)

最近在測試vsphere的時候發生了一件讓人很鬱悶的事,重啟vcenter後,在用vclient連線vcenter時,就出現如下錯誤: 於是開啟vcenter所在伺服器,檢視服務,發現VMware VirtualCenter Sever以及VMware VirtualCenter

Windows10永久啟用的工具有效!!!

無毒無捆綁,幾乎支援所有win10系統。 下載連結:https://pan.baidu.com/s/1CO1Y3SpKrNfObvpUsMvbbA 提取碼:0zr5  操作步驟: 1.下載檔案解壓縮,以管理員身份執行cmd。 2.進入介面按任意鍵執行程式 3