python爬蟲js逆向學習(二)
1.問題分析過程
本文以百度翻譯為例介紹js逆向過程
1.1 通過抓包找出返回資料的api,因重新整理時頁面不變,所以資料是通過ajax非同步獲取,所以可在xhr中抓包
1.2 分析請求頭得到formdata的資訊,只有sign是可變的,token是固定的,query為輸入的資訊
1.3 再全域性搜尋資料包的介面v2transapi?,找出js程式碼檔案,從中尋找生成sign的函式
1.4 斷點debug滑鼠移到y上可定位到生成函式,y(n)=e®
1.5 對於較長的引數生成js程式碼,可直接在Python中利用PyExecJs模組呼叫執行,發現js程式碼中還存在區域性引數未傳值
1.6 找出i的生成式,但是不知道l的值,將l在控制檯中執行,得到gtk,所以i=window[“gtk”],接下來在原始碼中對gtk進行搜尋得到需要的結果
1.7 將window.gtk的值賦給i後再對js程式碼進行除錯得到sign值
python在pycharm中用PyExecJs呼叫執行js程式碼時需配置相應的環境,windows自帶JScript引擎會報錯,所以需要安裝nodejs,然後新增到本機的環境變數後配置到pycharm中
2.程式碼示例
2.1 獲取js函式引數
import requests
import re
def get_params():
headers={'user-agent':''}
url="https://fanyi.baidu.com/"
html=requests.get(url,headers=headers).text
token=re.findall(r"window.*token: '(.*?)'",html,re.S)[0]
gtk=re.findall(r"window.gtk = '(.*?)';",html,re.S)[0]
return gtk,token
2.2 執行js程式碼獲取formdata
import execjs
import os
def get_FormData(word):
gtk,token=get_params()
# 修改當前執行環境
os.environ["EXECJS_RUNTIME"] = "Node"
# 獲取環境引擎
name=execjs.get().name
with open('code.js','r') as f:
js_text=f.read()
# 編譯js程式碼
ctx=execjs.compile(js_text)
js='e("{}","{}")'.format(word,gtk)
#eval可模擬執行js程式碼
sign=ctx.eval(js)
return token,sign
2.3 攜帶formdata對翻譯介面發起post請求
def get_res():
token,sign=get_FormData()
choice=input("請選擇:zh or en 漢譯英>zh,英譯漢>en :")
if choice=='zh':
f,t='zh','en'
if choice=='en':
f,t='en','zh'
word=input("請輸入:")
data={
'from': f,
'to': t,
'query': word,
'transtype': 'translang',
'simple_means_flag': '3',
'sign': sign,
'token': token,
'domain': 'common'
}
res=requests.post(trs_url,headers=headers,data=data).json()
print(res)
相關文章
- python爬蟲之js逆向(二)Python爬蟲JS
- python爬蟲js逆向Python爬蟲JS
- python爬蟲之JS逆向Python爬蟲JS
- python爬蟲之js逆向(三)Python爬蟲JS
- 逆向爬蟲知識學習爬蟲
- Python爬蟲之JS逆向分析技巧Python爬蟲JS
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- python爬蟲學習筆記(二)Python爬蟲筆記
- Python爬蟲進階之JS逆向入門Python爬蟲JS
- python爬蟲簡單實現逆向JS解密Python爬蟲JS解密
- python爬蟲之JS逆向某易雲音樂Python爬蟲JS
- 爬蟲學習日記(二)爬蟲
- python爬蟲學習1Python爬蟲
- Python爬蟲進階之JS逆向土地市場網!Python爬蟲JS
- python爬蟲是什麼?學習python爬蟲難嗎Python爬蟲
- Python爬蟲學習之(二)| urllib進階篇Python爬蟲
- Python爬蟲學習系列教程Python爬蟲
- Python爬蟲——實戰二:爬取天貓產品價格(逆向工程方法)Python爬蟲
- 什麼是爬蟲?學習Python爬蟲難不難?爬蟲Python
- 為什麼學習python及爬蟲,Python爬蟲[入門篇]?Python爬蟲
- Python爬蟲,JS逆向之 webpack 打包站點原理與實戰Python爬蟲JSWeb
- Python爬蟲學習筆記(三)Python爬蟲筆記
- Python爬蟲學習(2): httplibPython爬蟲HTTP
- Python 爬蟲 (六) -- Scrapy 框架學習Python爬蟲框架
- python爬蟲—學習筆記-4Python爬蟲筆記
- python爬蟲—學習筆記-2Python爬蟲筆記
- Python爬蟲進階之APP逆向(三)Python爬蟲APP
- Python爬蟲學習(6): 爬取MM圖片Python爬蟲
- Python爬蟲學習(5): 簡單的爬取Python爬蟲
- 學習C語言還是學習Python爬蟲?C語言Python爬蟲
- 收藏的爬蟲逆向工程爬蟲
- Python爬蟲系統化學習(3)Python爬蟲
- Python爬蟲系統化學習(4)Python爬蟲
- Python scrapy爬蟲學習筆記01Python爬蟲筆記
- 小白如何學習Python網路爬蟲?Python爬蟲
- python爬蟲學習01--電子書爬取Python爬蟲
- python簡單爬蟲(二)Python爬蟲
- 一入爬蟲深似海,總結python爬蟲學習筆記!爬蟲Python筆記