<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        python使用rsa加密算法模塊模擬新浪微博登錄

        來源:懂視網 責編:小采 時間:2020-11-27 14:38:43
        文檔

        python使用rsa加密算法模塊模擬新浪微博登錄

        python使用rsa加密算法模塊模擬新浪微博登錄:PC登錄新浪微博時,在客戶端用js預先對用戶名、密碼都進行了加密,而且在POST之前會GET一組參數,這也將作為POST_DATA的一部分。這樣,就不能用通常的那種簡單方法來模擬POST登錄(比如人人網)。 通過爬蟲獲取新浪微博數據,模擬登錄是必不可少的。 1、在
        推薦度:
        導讀python使用rsa加密算法模塊模擬新浪微博登錄:PC登錄新浪微博時,在客戶端用js預先對用戶名、密碼都進行了加密,而且在POST之前會GET一組參數,這也將作為POST_DATA的一部分。這樣,就不能用通常的那種簡單方法來模擬POST登錄(比如人人網)。 通過爬蟲獲取新浪微博數據,模擬登錄是必不可少的。 1、在

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

        通過爬蟲獲取新浪微博數據,模擬登錄是必不可少的。

        1、在提交POST請求之前,需要GET獲取四個參數(servertime,nonce,pubkey和rsakv),不是之前提到的只是獲取簡單的servertime,nonce,這里主要是由于js對用戶名、密碼加密方式改變了。

        1.1 由于加密方式的改變,我們這里將使用到RSA模塊,有關RSA公鑰加密算法的介紹可以參考網絡中的有關內容。下載并安裝rsa模塊:

        下載:https://pypi.python.org/pypi/rsa/3.1.1

        rsa模塊文檔地址:http://stuvel.eu/files/python-rsa-doc/index.html

        根據自己的Python版本選擇適合自己的rsa安裝包(.egg),在win下安裝需要通過命令行使用easy_install.exe(win上安裝setuptool從這里下載:setuptools-0.6c11.win32-py2.6.exe 安裝文件 )進行安裝,例如:easy_install rsa-3.1.1-py2.6.egg,最終命令行下測試import rsa,未報錯則安裝成功。

        1.2 獲得以及查看新浪微博登錄js文件

        查看新浪通行證url (http://login.sina.com.cn/signup/signin.php)的源代碼,其中可以找到該js的地址 http://login.sina.com.cn/js/sso/ssologin.js,不過打開后里面的內容是加密過的,可以在網上找個在線解密站點解密,查看最終用戶名和密碼的加密方式。

        1.3 登錄

        登錄第一步,添加自己的用戶名(username),請求prelogin_url鏈接地址:

        prelogin_url = 'http://login.sina.com.cn/sso/prelogin.php?entry=sso&callback=sinaSSOController.preloginCallBack&su=%s&rsakt=mod&client=ssologin.js(v1.4.4)' % username

        使用get方法得到以下類似內容:

        sinaSSOController.preloginCallBack({"retcode":0,"servertime":1362041092,"pcid":"gz-6664c3dea2bfdaa3c94e8734c9ec2c9e6a1f","nonce":"IRYP4N","pubkey":"EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443","rsakv":"1330428213","exectime":1})

        進而從中提取到我們想要的servertime,nonce,pubkey和rsakv。當然,pubkey和rsakv的值我們可以寫死在代碼中,它們是固定值。

        2、之前username 經過BASE64計算:

        代碼如下:


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


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

        在最新的rsa加密方法中,username還是以前一樣的處理;

        password加密方式和原來有所不同:

        2.1 先創建一個rsa公鑰,公鑰的兩個參數新浪微博都給了固定值,不過給的都是16進制的字符串,第一個是登錄第一步中的pubkey,第二個是js加密文件中的‘10001'。

        這兩個值需要先從16進制轉換成10進制,不過也可以寫死在代碼里。這里就把10001直接寫死為65537。代碼如下:


        代碼如下:


        rsaPublickey = int(pubkey, 16)
        key = rsa.PublicKey(rsaPublickey, 65537) #創建公鑰
        message = str(servertime) + '\t' + str(nonce) + '\n' + str(password) #拼接明文js加密文件中得到
        passwd = rsa.encrypt(message, key) #加密
        passwd = binascii.b2a_hex(passwd) #將加密信息轉換為16進制。

        2.2 請求通行證url:login_url =‘http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.4)'

        需要發送的報頭信息

        代碼如下:


        postPara = {
        'entry': 'weibo',
        'gateway': '1',
        'from': '',
        'savestate': '7',
        'userticket': '1',
        'ssosimplelogin': '1',
        'vsnf': '1',
        'vsnval': '',
        'su': encodedUserName,
        'service': 'miniblog',
        'servertime': serverTime,
        'nonce': nonce,
        'pwencode': 'rsa2',
        'sp': encodedPassWord,
        'encoding': 'UTF-8',
        'prelt': '115',
        'rsakv' : rsakv,
        'url': 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack',
        'returntype': 'META'
        }

        請求的內容中添加了rsakv,將pwencode的值修改為rsa2,其他跟以前一致。

        將參數組織好,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=101則表示登錄失敗。登錄成功后結果與之類似,不過retcode的值是0。

        3、登錄成功后,在body中的replace信息中的url就是我們下一步要使用的url。然后對上面的url使用GET方法來向服務器發請求,保存這次請求的Cookie信息,就是我們需要的登錄Cookie了。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        python使用rsa加密算法模塊模擬新浪微博登錄

        python使用rsa加密算法模塊模擬新浪微博登錄:PC登錄新浪微博時,在客戶端用js預先對用戶名、密碼都進行了加密,而且在POST之前會GET一組參數,這也將作為POST_DATA的一部分。這樣,就不能用通常的那種簡單方法來模擬POST登錄(比如人人網)。 通過爬蟲獲取新浪微博數據,模擬登錄是必不可少的。 1、在
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 中文字幕免费观看| 亚洲精品理论电影在线观看| 色视频在线观看免费| 免费国产成人高清在线观看网站| 亚洲欭美日韩颜射在线二| eeuss影院免费92242部| 啦啦啦手机完整免费高清观看| 久久亚洲私人国产精品| 久久99精品免费视频| 国产成人亚洲综合无码精品| 中文字幕永久免费视频| 国产亚洲精久久久久久无码77777| 亚洲高清在线视频| 精品亚洲永久免费精品| 91在线品视觉盛宴免费| 亚洲av专区无码观看精品天堂 | 亚洲人成色4444在线观看| eeuss影院ss奇兵免费com| 亚洲美日韩Av中文字幕无码久久久妻妇| 亚洲av无码专区在线电影| 日本二区免费一片黄2019| 国产亚洲精品91| 亚洲无码日韩精品第一页| aaa毛片免费观看| 亚洲国产精华液网站w| 久久精品国产大片免费观看| 亚洲成a人片在线观看中文动漫| 18禁黄网站禁片免费观看不卡| 亚洲日本人成中文字幕| 日韩免费高清一级毛片在线| 一级毛片免费播放试看60分钟| 亚洲色大成网站www永久一区 | 亚洲精品视频免费 | 免费观看日本污污ww网站一区| 野花视频在线官网免费1| 亚洲日韩精品射精日 | 91视频免费网址| 亚洲综合无码一区二区痴汉| 国产hs免费高清在线观看| 在线看片免费人成视频播| 亚洲人成电影院在线观看|