1. 程式人生 > >有趣的反爬蟲

有趣的反爬蟲

每次 網站 child m3u8 tel 頁面 -- 改變 分享

今天在爬取一個視頻網站的時候

找到了他的視頻地址,準備開工。

網頁地址:http://m.kankanwu.com/Arts/xianchudangdao2017/player-0-0.html  

網頁iframe:https://newplayer.dongyaodx.com/player1.php?id=47993_0_0

iframe裏面的視頻地址:http://114.80.186.146/1583642e1b99851da18300f3f2c9ce41.m3u8?type=mpptv.wp&k=4d1b7fdb9afe5b0e97bd6c33d91447af-2506-1500968177%26segment%3D49520731_4952ed51_1500953777%26bppcataid%3D26&vvid=f169053e-5d06-4eae-8dc6-c22067b62e03

----最外層網頁---

視頻地址在iframe裏面 發現iframe是不能單獨打開的 是因為header頭Referer有判斷,如果直接打開就是顯示 “pir”

------iframe------

不過這都不是什麽問題,scrapy 嵌套這些scrapy.http的是自動加上Referer的 所以在scrapy裏面是直接有返回的

視頻地址是通過js渲染出來的,有個接口返回視頻地址

正則在頁面裏面匹配到參數(服務器端渲染)之後接開搞了,搞了幾次發現都報錯

  1. h5url: null
  2. id: 47993_0_0
  3. tm: 1500953776
  4. sign: 8eebae3195674b9600f68340440cee93
  5. script: 1
  6. userlink: http://m.kankanwu.com/Arts/xianchudangdao2017/player-0-0.html
  7. dao: 7691567
  8. _: 1500953776928

network裏面看他傳了這八個值,

sign參數為後臺php渲染,每次都會更改

dao這個參數是在一個隱藏的input上,拼接參數的時候是document.getElementById(‘e2‘)獲取的

最後我是在頁面上直接把所有的值復制出來,和他本是網站請求的地址比對 發現dao參數不對

技術分享

這個函數的傳參數也是後臺渲染的,隨機的一段js代碼 去改變e2元素的值

也就是說後臺返回了一段隨機 js代碼 給到前臺執行,結果在返回到後臺,才能成功的請求到正確的返回

以後有空再看這個js吧,心累

end

有趣的反爬蟲