首页
留言板
关于本站
Search
1
实现网站页面秒开-预加载JS脚本instant.page
56,553 阅读
2
解决Windows连接PPTP/L2TP时无法连接上外网Internet的困扰
55,633 阅读
3
Typecho通过阿里邮件推送和LoveKKComment插件实现评论邮件通知
39,416 阅读
4
如何做到网页性能的极致优化?
29,687 阅读
5
回村无网络之-《无线网桥使用记》
29,590 阅读
路由交换
华为笔记
华三笔记
Mikrotik笔记
中兴笔记
Linux
Nginx
数据库
typecho
WordPress
资源分享
网站技术
Windows
other
未分类
登录
Search
标签搜索
路由交换
运维
linux
ROS
mikrotik
华为
软路由
WordPress
ospf
路由
网站
centos
php
ARP
交换
nssa
typecho
广播风暴
Nginx
dns
Ledo
累计撰写
61
篇文章
累计收到
1,024
条评论
首页
栏目
路由交换
华为笔记
华三笔记
Mikrotik笔记
中兴笔记
Linux
Nginx
数据库
typecho
WordPress
资源分享
网站技术
Windows
other
未分类
页面
留言板
关于本站
搜索到
2
篇与
的结果
2019-01-11
Mikrotik ROS实现URL劫持push推送信息和重定向(图文教程)
[mark_a]ROS的高级玩法非常多,今天就介绍下如何利用网页上弹出来的小广告,把它拦截并替换为我们做好的内容,图片,网页,flash都可以,我这里只是不对特定的目标才做代理,针对所有的80和443连接做劫持进行重定向,一般小区宽带运营商这里会用防火墙把目标添加到一个地址列表,用来做代理的目标地址,配合radius计费系统,把即将到期的用户下发另外一个IP段,再只对这个源地址做代理,实现提醒即将到期用户续费的目的,如果用户量多的话,想在哪个知名网站做点小广告,再收取点广告赞助,这点我之前深有感触,最后实在受不了这种宽带运营商,决然换了![/mark_a]网上有很多这种方法实现的ros代码,可是很多都不是真的管用,我也是掉坑了好几次,本文将以ros的winbox操作进行演示。1,分类IP,将网内IP用户归类整理,通过标记功能实现建立src2地址表,动态删除时间间隔为8小时;这一步非常重要,在建立src1地址表是需要排除src2中已经包含的地址;建立src1地址表,自动删除时间间隔为1分钟;这时我们可以看见已经生成了动态的地址表:原理解析:系统维护src1地址表的时间是1分钟,src2地址表维护时间为8小时,当一个IP地址产生连接后会被记录到src1和src2中,但是src1中的地址只能生存1分钟,它检测到在src2中已经存在该地址后会在1分钟后删除掉该地址,接下来我们只需要处理src1中的地址即可。2,劫持与重定向处理劫持也就是替换连接,地址栏的地址不变,但是网页实体已经被替换;重定向不同于劫持,地址栏地址会转向到一个新地址;劫持的实现:然后即可在该ip下的端口绑定一个html页面来展示,用户的地址栏地址保持不变。重定向的实现:该重定向规则只能定向到自身的某个端口上,然后我们交给web-proxy来搞定通过ros的代理端口8088来处理,该端口会将所有请求禁止并跳转到指定的地址,然后打开浏览器,打开任意网页都会被跳转,当然只针对src1地址表中的ip用户。3,关于网页篡改及弹窗的实现:该方面主要进行匹配网页中的元素,然后做替换处理,按照本思路来处理并不难,比如:/ip proxy access add action=deny comment="" disabled=no path=/othercity/all.htm redirect-to=\ 192.168.0.2/qqpush.html add action=deny comment="" disabled=no path=/img/baidu_logo.gif redirect-to=\ 192.168.0.2/logo.gif add action=deny comment="" disabled=no path=/images/ad_router_club.gif \ redirect-to=192.168.0.2/routerclub.gif add action=deny comment="" disabled=no path=\ /upload/2019-01-11/guanggaotupian.gif redirect-to=192.168.0.2/00.gif电信运营商都是用类似这种手法,有兴趣可以试一下
2019年01月11日
11,875 阅读
2 评论
0 点赞
2018-11-02
RouteOS下使用dnspod的ddns
强制赋值变量为:code,token,domain_id,record_id 可选变量为:sub_domain,record_type,record_line,value 当变量sub_domain为空时,PHP自动赋值为:『routeos』 当变量record_type为空时,php自动赋值为:『A』 当变量record_line为空时,PHP自动赋值为:『默认』 当变量value为空时,php自动获取当前请求的IP为其值 PHP$realip = getIP(); $code = $_GET['code']; $token = $_GET['token']; $domain_id = $_GET['domain_id']; $record_id = $_GET['record_id']; $sub_domain = $_GET['sub_domain']; $value = $_GET['value']; $record_type = $_GET['record_type']; $record_line = $_GET['record_line']; if (empty($code)) { exit('code empty.'); } if (empty($token)) { exit('token empty.'); } if (empty($domain_id)) { exit('domain_id empty.'); } if (empty($record_id)) { exit('record_id empty.'); } if (empty($sub_domain)) { $sub_domain = "routeos"; } if (empty($record_type)) { $record_type = "A"; } if (empty($record_line)) { $record_line = "默认"; } if (empty($value)) { $value = $realip; } $ip = checkIP($code, $token, $domain_id, $record_id); if (empty($ip)) { exit('ip empty.'); } if ($ip == $value) { exit("IP一致."); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://dnsapi.cn/Record.Modify"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, "login_token=" . $code . "," . $token . "&format=json&domain_id=" . $domain_id . "&record_id=" . $record_id . "&sub_domain=" . $sub_domain . "&value=" . $value . "&record_type=" . $record_type . "&record_line=" . "$record_line"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec($ch); curl_close($ch); exit('ok'); function checkIP($code, $token, $domain_id, $record_id ) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://dnsapi.cn/Record.Info"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, "login_token=" . $code . "," . $token . "&format=json&domain_id=" . $domain_id . "&record_id=" . $record_id . ""); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec($ch); curl_close($ch); $json = json_decode($server_output, TRUE); return $json['record']['value']; } function getIP(){ if (@$_SERVER["HTTP_X_FORWARDED_FOR"]) $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; else if (@$_SERVER["HTTP_CLIENT_IP"]) $ip = $_SERVER["HTTP_CLIENT_IP"]; else if (@$_SERVER["REMOTE_ADDR"]) $ip = $_SERVER["REMOTE_ADDR"]; else if (@getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (@getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP"); else if (@getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR"); else $ip = "Unknown"; return $ip; } RouteOS 6.x:global id "200000" :global token "*****************25712a6430c5f2" :global domainid "830000" :global recordid "295000000" :global subdomain "routeos" :global xx "https://www.dwhd.org/dnspod_2.php?code=$id&token=$token&domain_id=$domainid&record_id=$recordid" /tool fetch url=("$xx") mode=https keep-result=yes dst-path=ddns.txt RouteOS 5.x:global id "200000" :global token "*****************25712a6430c5f2" :global domainid "830000" :global recordid "295000000" :global subdomain "routeos" :global xx "http://www.dwhd.org/dnspod_2.php?code=$id&token=$token&domain_id=$domainid&record_id=$recordid" /tool fetch url=("$xx") mode=http keep-result=yes dst-path=ddns.txt
2018年11月02日
8,167 阅读
3 评论
0 点赞