前言
最近有朋友推薦了一個(gè)很簡(jiǎn)單的需要 js 逆向的網(wǎng)站
中國(guó)土地市場(chǎng)網(wǎng)
主要是需要獲取下面的信息
image
分析
首先當(dāng)然是抓包分析返回的數(shù)據(jù)
或者直接將鏈接放到代碼里面踩验,將響應(yīng)內(nèi)容打印出來歇父。
如果一樣的話說明直接就能獲取到,否則的話可能就是對(duì)網(wǎng)頁進(jìn)行了處理等
響應(yīng)
上面是用代碼請(qǐng)求返回的響應(yīng)
html 中嵌入了 JS蚊夫,而且很可能做了跳轉(zhuǎn)兵罢,因?yàn)橛袀€(gè) location 的變量
破解
下面是通過 Chrome 瀏覽器抓包的過程
經(jīng)過了兩次跳轉(zhuǎn)
image
其中重定向的鏈接是在第一次請(qǐng)求返回的響應(yīng)里面逻族,用 JS 生成的
location
so, 我們將返回的 JS 扣出來础拨,在本地調(diào)試下
改正后的JS
其中有些用不到的參數(shù)掠抬,直接注釋掉
比如參數(shù) curlocation 是當(dāng)前頁面的 href吼野,沒有用到,反而會(huì)給我們調(diào)試增加阻礙
因?yàn)槲覀儧]有 window 這個(gè)對(duì)象
運(yùn)行這段 JS两波,直接生成我們所需的參數(shù)
驗(yàn)證
從抓包中我們可以得知總共有三次清求
其中第一次和第二次都會(huì)生成驗(yàn)證的 cookie
所以我們也用代碼模擬三次請(qǐng)求
代碼如下:
def spider():
response = session.get(url)
text = response.text
# f_js = re.findall("javascript\">(.*?)</script>", text)[0]
ctx = execjs.compile(js)
location = ctx.call("YunSuoAutoJump")
second_url = "http://www.landchina.com" + location
_ = session.get(second_url)
res = session.get(url)
selector = Selector(text=res)
result = selector.css("#TAB_contentTable tr")[1:]
td_list = result.css("td")
最后我們看下能否提取出數(shù)據(jù)
結(jié)果一目了然瞳步!
驗(yàn)證結(jié)果
推薦閱讀
python數(shù)據(jù)可視化神器--pyecharts 快速入門
本人公眾號(hào),歡迎關(guān)注