1.目標
目標網址:https://www.cde.org.cn/main/news/listpage/545cf855a50574699b46b26bcb165f32
import requestscookies = {'FSSBBIl1UgzbN7N80S': '8sYeMWaC_IHoNl8Ckfx2y9MLiueMCkPr2V3MIoZkrMPUfzMMaXKzAoxpNPvyw4lt','Path': '/','FSSBBIl1UgzbN7N80T': '3js3ygV.St6BvO20CqJJvultwYwAmukdqIPpIgxLzMR6XftO8Uf1_XHz7gFtfZ3BqudXefnJK3q_RtHDmNYbM5OTMaSzOB9G5MtH1Bc2WHs4usnskV5NOGfHsvOwfKPS8R2QUM5WODmFdV8gu6IBXG90EMRy_hQ3HnQoSoGBYWu9DsttOG5S9l8Nf5CL.RzeaOfm7ga7FJtykCM3HdK68gqw.zL6zxBrkLAeRWPaxMeiFu2dYtaJ_wUUEjkYqo.5bfh_ooEdlmgyM5_QF8P60LrUVUJbl_Oc9WDcexuwAo_qm3q',
}headers = {'Accept': 'application/json, text/javascript, */*; q=0.01','Accept-Language': 'zh-CN,zh;q=0.9','Cache-Control': 'no-cache','Connection': 'keep-alive','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Origin': 'https://www.cde.org.cn','Pragma': 'no-cache','Referer': 'https://www.cde.org.cn/main/news/listpage/545cf855a50574699b46b26bcb165f32','Sec-Fetch-Dest': 'empty','Sec-Fetch-Mode': 'cors','Sec-Fetch-Site': 'same-origin','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36','X-Requested-With': 'XMLHttpRequest','sec-ch-ua': '"Chromium";v="136", "Google Chrome";v="136", "Not.A/Brand";v="99"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"',# 'Cookie': 'FSSBBIl1UgzbN7N80S=8sYeMWaC_IHoNl8Ckfx2y9MLiueMCkPr2V3MIoZkrMPUfzMMaXKzAoxpNPvyw4lt; Path=/; FSSBBIl1UgzbN7N80T=3js3ygV.St6BvO20CqJJvultwYwAmukdqIPpIgxLzMR6XftO8Uf1_XHz7gFtfZ3BqudXefnJK3q_RtHDmNYbM5OTMaSzOB9G5MtH1Bc2WHs4usnskV5NOGfHsvOwfKPS8R2QUM5WODmFdV8gu6IBXG90EMRy_hQ3HnQoSoGBYWu9DsttOG5S9l8Nf5CL.RzeaOfm7ga7FJtykCM3HdK68gqw.zL6zxBrkLAeRWPaxMeiFu2dYtaJ_wUUEjkYqo.5bfh_ooEdlmgyM5_QF8P60LrUVUJbl_Oc9WDcexuwAo_qm3q',
}params = {'MmEwMD': '30VyrbstxVaiIePYi8t7Izk.2hFSezl8gr2avbixYm8KKdJcbxbucaEWVbw.RPIigzgHmdT7XDoMfVEve61oOG9VOVQUZd0kNadlppqaqwBSXsBuBw3ObE0lgDYyLDG0OdRoZT.9bUbEdhd9songV6XL_9pNli_1DIuG3lVP78knP2fIqPifkeWabjo.WJ3Zj3lyaE86hPYM0ICYhycRF9UAjUPrvwo0bQMevkGfjktatXp4g1A8yYiai.NjkT4pzHAqyfoBqiI.Jj8KPLdEM4FIucscxGD3UUbcsaR6qohf8galqgA0Hv3.VPSABnakeqDO7c2eHB3kjl_xxkoJeCKzcnaULXCd9pdLAp0FKRzEzqy',
}data = {'pageNum': '1','pageSize': '10','searchTitle': '','classId': '545cf855a50574699b46b26bcb165f32',
}
url = 'https://www.cde.org.cn/main/news/getList'response = requests.post(url, params=params, cookies=cookies, headers=headers, data=data)
- 目標POST請求:
https://www.cde.org.cn/main/news/getList
- 需要解決:
FSSBBIl1UgzbN7N80T
:瑞數3代cookieMmEwMD加密參數
2.逆向分析
2.1 兩套js
https://www.cde.org.cn/4QbVtADbnLVIc/c.FxJzG50F.6152bb9.js?D9PVtGL=6152bb
https://www.cde.org.cn/4QbVtADbnLVIc/d.FxJzG50F.6152bb9.js?D9PVtGL=6152bb
唯一的區別就是變了一個字母,暫且叫它cts
和dts
,都是固定不變的,但是他們是有區別的,在于cts
可以生成cookie,dts
可以生成MmEwMD
參數
直接把兩套js代碼都下載下來,然后就可以直接導入使用
2.2 Cookie分析
第一次請求頁面202
可以看到是用的cts
第一次GET
請求
https://www.cde.org.cn/main/news/listpage/545cf855a50574699b46b26bcb165f32
返回202
狀態碼,返回content
和function
函數代碼,返回兩個cookie
FSSBBIl1UgzbN7N80T
和FSSBBIl1UgzbN7N80S
但是返回的這個FSSBBIl1UgzbN7N80T
沒什么用
因為第二次請求攜帶FSSBBIl1UgzbN7N80T
是瑞數代碼生成的,不是返回的這個
cts
和content
和function
函數三者配套使用可以生成FSSBBIl1UgzbN7N80T
content分析
字符串中使用了不合法的 Unicode
轉義序列就會
報錯"Uncaught SyntaxError: Invalid Unicode escape sequence"
還有HTML
實體編碼(如 <
和 >
需要轉成 <
和 >
)
第二次請求頁面200
需要攜帶第一次請求返回FSSBBIl1UgzbN7N80S
和瑞數代碼生成的FSSBBIl1UgzbN7N80T
第二次GET
請求
https://www.cde.org.cn/main/news/listpage/545cf855a50574699b46b26bcb165f32
返回200
狀態碼,然后又會返回一個新的content
和function
函數代碼,并且是用的dts
dts
和content
和function
函數三者配套使用可以生成MmEwMD
2.3 MmEwMD參數
XHR
斷點MmEwMD
可以看到是 XMLHttpRequest.open
方法初始化請求。它不會發送請求,只是設置請求的基本參數
瑞數正是重寫了 XMLHttpRequest.open
方法,所以會生成MmEwMD
參數
進入open
方法內部
- 生成的
FSSBBIl1UgzbN7N80T
不對,請二次請求頁面仍然會是202
- 生成的
MmEwMD
不對,就獲取不到列表頁的數據 - 正常情況下返回