Python爬蟲進階之JS逆向土地市場網!

Python資深程式設計師發表於2019-08-17

最近有朋友推薦了一個很簡單的需要 js 逆向的網站中國土地市場網

主要是需要獲取下面的資訊

 

分析

首先當然是抓包分析返回的資料 或者直接將連結放到程式碼裡面,將響應內容列印出來。 如果一樣的話說明直接就能獲取到,否則的話可能就是對網頁進行了處理等

 

上面是用程式碼請求返回的響應 html 中嵌入了 JS,而且很可能做了跳轉,因為有個 location 的變數

破解

下面是通過 Chrome 瀏覽器抓包的過程 經過了兩次跳轉

 

其中重定向的連結是在第一次請求返回的響應裡面,用 JS 生成的

 

so, 我們將返回的 JS 扣出來,在本地除錯下

 

其中有些用不到的引數,直接註釋掉 比如引數 curlocation 是當前頁面的 href,沒有用到,反而會給我們除錯增加阻礙 因為我們沒有 window 這個物件

執行這段 JS,直接生成我們所需的引數

驗證

從抓包中我們可以得知總共有三次清求 其中第一次和第二次都會生成驗證的 cookie

所以我們也用程式碼模擬三次請求 程式碼如下:

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")

如果你依然在程式設計的世界裡迷茫,可以加入我們的Python學習扣qun:784758214,看看前輩們是如何學習的!交流經驗!自己是一名高階python開發工程師,從基礎的python指令碼到web開發、爬蟲、django、資料探勘等,零基礎到專案實戰的資料都有整理。送給每一位python的小夥伴!分享一些學習的方法和需要注意的小細節,點選加入我們的python學習者聚集地

最後我們看下能否提取出資料 結果一目瞭然!

 

相關文章