本文目錄一覽:
- 1、硬肝手機版拼多多js逆向
- 2、python中如何調用js文件中的方法呢
- 3、怎麼用 python 模擬 js 里 JSEncrypt 模塊的加密方式
- 4、如何在 js 里 RSA 加密然後再python 里解密
- 5、python如何實現 JS中的 unescape函數
硬肝手機版拼多多js逆向
無痕模式打開拼多多:;page_id=10002_1645280499485_y9wud75jutbsch_is_search_mall=bsch_show_active_page=lastTabItemID=14refer_page_name=psnl_verificationrefer_page_id=10390_1645280795027_088ye3bk3krefer_page_sn=10390
然後在列表就行下來 看請求出來的列表api
把鏈接進行xhr斷點
然後開始查調用堆棧
找到
繼續斷點調試
t就是最後自己需要的那個加密參數
t的加密是安倆次調試跳出來的
所以加截斷後按一次就開始按f11
n[r(“0xfa”, “Vta9”)](t, n[r(“0x108”, “wFxG”)](Re))
找到這個 在控制台打印Re()就出來加密參數了
然後 進入Re這個方法 新弄個js就行了
然後用python調用這個js就可以了
python中如何調用js文件中的方法呢
1、打開pycharm開發工具,點擊File菜單,選擇Settings…,進行第三方模塊安裝;輸入selenium,點擊Install Package。
2、接着在python項目的指定文件夾下,鼠標右鍵新建python文件,輸入文件名並點擊Python file。
3、打開新建的文件,依次導入selenium、webdriver和time。
4、調用webdriver模塊中的Chrome(),使用get()獲取對應網址的內容。
5、調用find_element_by_id()獲取對應頁面元素,然後調用按鈕點擊事件。
6、修改get()方法中的請求路徑,然後保存代碼並運行文件,查看運行結果。
怎麼用 python 模擬 js 里 JSEncrypt 模塊的加密方式
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=ssocallback=sinaSSOController.preloginCallBacksu=%srsakt=modclient=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=1callback=parent.sinaSSOController.feedBackUrlCallBack’,
‘returntype’: ‘META’
}
請求的內容中添加了rsakv,將pwencode的值修改為rsa2,其他跟以前一致。
將參數組織好,POST請求。檢驗是否登錄成功,可以參考POST後得到的內容中的一句 location.replace(“;callback=parent.sinaSSOController.feedBackUrlCallBackretcode=101reason=%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了。
如何在 js 里 RSA 加密然後再python 里解密
所說所有的變量都是對象。 對象在python里,其實是一個指針,指向一個數據結構,數據結構里有屬性,有方法。
對象通常就是指變量。從面向對象OO的概念來講,對象是類的一個實例。在python里很簡單,對象就是變量。
class A:
myname=”class a”
上面就是一個類。不是對象
a=A()
這裡變量a就是一個對象。
它有一個屬性(類屬性),myname,你可以顯示出來
print a.myname
所以,你看到一個變量後面跟點一個小數點。那麼小數點後面
python如何實現 JS中的 unescape函數
可用base64 模塊
import base64
a = “Hello world!”
b = base64.encodestring(a) #加密
c = base64.decodestring(b) #解密
print(a)
print(b)
print a == c
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/303371.html