該技術是我無心中接觸的可以跨域操做JS的狀況,經過跨域JS操做能夠實如今你使用百度搜索跳轉到你所在的頁面的時候會自動使得百度搜索頁面也進行相應的跳轉,從而實現操做者的不少目的.目前我經過研究已經弄懂實現原理,並未親自嘗試,因此該文也是起拋磚引玉的做用,但願各位前端大牛能進行一下研究,而且能作到防範這種無恥的操做.前端
好了先上圖:跨域
這是一張很日常的百度搜索,接下來咱們點擊第一個搜索,因而乎詭異的事件出現了瀏覽器
咱們能夠看到你除了打開了公司的頁面以外回過頭來百度頁面忽然下方多了個廣告,要不是眼鏡尖的,恐怕還真認爲是往百度裏面插入了一條廣告,不過仔細看域名發現原來是域名跳轉了,我對這樣的方法很是鄙夷,決心研究一下實現方法,而且將它公佈出來,但願各位大神可以找到解決問題的辦法.而後我開始研究,首先先打開了控制檯框架
我發現是頁面跳轉了以後只用了框架集模擬除了一個百度頁面,此時我下定決心必定要找出緣由,經過一個下午的努力終於找到了問題的所在原來是打開的網頁裏面的一串代碼在做祟請看下圖測試
話說這家公司程序猿還挺狡猾的,若是不是這個網站發起的get請求代碼獲得的代碼會是沒法解析的錯誤代碼因而我直接進控制檯尋找找到了一段壓縮而且混效過的代碼 網站
覺得混淆了代碼就能混過去麼,不可能的,經過對混淆代碼進行反混淆獲得以下代碼,仔細一看原來原理是這樣的,可是本人對JS這塊的瞭解不是很深刻也沒法說明白爲何會這樣因此還但願大神們能給出一些解答,代碼以下搜索引擎
代碼稍微有點長,後面沒有截取完,不過總的來講就是不停的if else判斷 關鍵點就是用正則把你當前的路由替換成他的後臺的一個網頁,而後跳轉到他的那個網頁上去,查了下window.opener有可以操做父窗口的功能,估計問題的緣由就在於此.好了到目前爲止我就只是知道這麼多了,但願耐心看到這裏的大神們可以看一下這個是一個什麼樣的原理,以及它是否能夠被防範,本人不想之後點擊任何一個百度搜索頁面,搜索都會被跳轉,還有一點很重要,從代碼上面來看這項技術可以對大部分的搜索引擎瀏覽器生效.不過今天不少同事測試的時候發現一些裝有高度防廣告的瀏覽器或者插件可以屏蔽這一個功能.因此仍是存在解決問題的辦法的.spa