博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
秋式广告杀手技术分享:网络请求基础知识
阅读量:5239 次
发布时间:2019-06-14

本文共 3168 字,大约阅读时间需要 10 分钟。

最近园子里,关于.net门槛的文章风风火火,不过这类事情每过段时间就会出来一次,所以酱油都懒的打了。

当然个人也是有想法的,特别是这两天碰巧和一个三四年经验的java开发者呆在一起,对方说.net就是拉拉控件时,我还是很严厉的批评了对方,用自己比对方更具的丰富知识,重新引导对方对.net的看法。

不知道是谁在传播这种.net纯控件论,而且这么传播的这个“谁",一定是个新手,所以建议新手,就不要整天跑外面乱吹了,好好学知识去吧。

对于老手,在对新手进行知识传播时,特别是刚教授新学拉控件的时候,一定要讲下.net的精深,告诉他们学的是皮毛,没事不要乱吹自己有多厉害,做人要谦虚。

现在我们看下知识点:

现在很多开发的书,它们只讲.net的原理的开发手法,所以很多人只局域在.net的开发,光这样,到达100级也无法成功转职的。

试问其它语言(java) 和.net有啥不同?

不同的只是同样是初级,人家比你多懂点form标签属性的method属性有Get、Post等,action的属性可以指定数据传输到哪个页面。

而.net的新手从控件入门的不懂,其实,新手只要顺带再学一下html,了解下基础Http协议,基本可以完胜java,所以教人控件的导师们,教的时候,除了引导学生对比查看前后生成的html和aspx之外,form属性,也要特别的花精力说一下。

如果你再了解一下下面的知识,就可以秒杀同级java选手了,至少不会乱吹啥.net只是xxx。

跳出.net的领域,我们回归一下,浏览器输出域名之后,发生了什么事?

搜搜互联网,也许同样的标题,你可以找出的只是后半段的事,今天这里,给大伙补充下前半段的事:

1:浏览器那点事:

浏览器是什么?其实就是一个高效的代理,负责帮用户请求特定的网址,然后解析并呈现。

几个必须说明的是:

浏览器监听的端口不是80:

通常是1024以上,而且会开好几个,(用心想想,这么多浏览器,一起开的时候,都从80端口来,那不是乱套了)

所以从本机发出的请求,不是80端口,比较多是10000号以上的端口。

学会查找一个进程对应开的端口:

打开任务管理器,查看进程对应的PID(如果默认没显示,在任务管理器的选项里找,然后打勾)

tp1

接着,打开cmd:输入netstat -nao -p tcp,往下拉:

发现找不到了,所以就不截图了,所以这里就得反着说了,为啥找不到了?因为浏览器进程的端口目前没有活动,回收了。

所以,你反过来找,通过端口找到PID,再回去找相应的进程,就一定有对应的进程。 

目前阶段,秋式广告杀手在广告屏蔽上,取了一定的成效,以最高效的方式的,屏蔽了广告,又不影响网络。

不过只能处理域名方式,有些广告是IP形式出现的,软件暂时不能处理,这着实让我有点想法。

所以我最近就在想,想一些网络请求的执行流程:

当我们在浏览器输入一个网址的时候?发生了什么事?

如果你去搜网络,会告诉你一些本机之外的事情,这里我就讲一下我知道的,本机之内的事情:

1:浏览器拿到你的域名请求,要怎么处理,是浏览器的事了, 不过正规的都会按以下流程办事:

把域名解析为IP:

如何解析呢?

1:查找浏览器自身的DNS缓存表。

2:查找系统Hosts文件。

3:查询系统缓存(不知道这个有没有,我只是好像大概也许可能听说过)

4:请求本机DNS指向的服务器。

 

 

所以大伙看到,秋式广告杀手在开启,调整完Hosts文件之后,需要重启下浏览器的原因,就是因为浏览器自身有DNS缓存表,不重启,指向的还是旧的IP。

每种浏览器,都有自身一种清空DNS缓存表的机制:

像IE,可以设置注册表来禁止,

像Chrome,可以在浏览器通过特殊命令调出窗口,再清除。

像Firefox,可以在选项里直接设置。 

不同浏览器对于清空或禁止DNS缓存表都有自己的一套,所以,秋式广告杀手,只处理了像IE,通过注册表就可以处理的事情。

另外其它浏览器,无法直接用代码操作,你总不能去教用户怎么设置吧?还不如告诉用户重启浏览器的操作,就显的更为简单了。

如果选择步骤一上拦截:那么就得弄成浏览器插件了, 通过写浏览器插件,你可以掌握到用户第一手的请求,也可以对用户请求后的东西进行修改再返回;

写浏览器插件,应该是最理想的做法,但是你得懂一点浏览器插件语言的东西,学一学新的知识。美中不足的是,写出来的软件,只适用这单独的一种浏览器。

如果要全面有效,还得不停的针对浏览器写插件,然后再告诉用户,每种浏览器都给我装上一个,这样就OK了。。。。 

再不成,就自己写个浏览器了,浏览器,不用内置的ie组件,自己能不能写?

能写,有个三五年经验的人都能写,别说自己不会(现有的互联网,技术都是散落的,就怕你组合)

但写出来考虑的因素特多:效率、性能、呈现、解析、速度,综合起来,估计就得是千年老龟。。。

所以。。。自己玩玩,算是一种技术研究学习,倒也没啥不可。。。 

 

 

正如上面四个步骤,Hosts是排在第二位的,不过Hosts只能一条一条的写入,好在要拦截的并不多。 

对于步骤三,基本是没想啥法,操作系统缓存,目前还没意图。

对于通过修改本机DNS指向自己的服务器,这样一来,的确可以做很多事,不过对于本人这点资金实力,往后期想,也负担不起这种责任。

因为所有的请求都会到你服务器,你要负责所有的解析,要是自己服务器挂了,累大伙上不了网,不被骂死也被口水淹死。

说了这么多,一来是要告诉大伙,软件为什么选择了hosts方式。

 

从一讲到四,都是说域名,那IP咋拦截?

这里又得给大伙讲点我所知道的网络知识:

1:IP包 先查路由表(找到数据要发送到哪个IP(网关))。

2:再查arp表(要把IP换成MAC地址)。

3:物理硬件把数据传到网关(把数据送到MAC地址上去)

4: 到了网关(开包,然后循环123找下一个发送点)

除了以上的,还有好多通过设置是可以阻止IP请求的,这些设置,具体是1234的前中后,哪一步拦截的?

留给大伙想。

如果我们要阻止某个IP的请求,我们可以怎么做?

1:修改路由表,把指定的ID,忽悠到一个不存在的网关去,这样IP送不出去,自然就实现了屏蔽的功能。

2:修改arp表,把网关的地址,忽悠一个不存在的地址,这样,恭喜,你断网了。。哈哈。

3:拦截网卡的数据,数据总是要从一个网卡跳到另一个网卡的,通过拦截网卡的数据,这就回到了上面说的全局拦截了。

4:网关拦截(这通常就是路由器了,除了特定的路由器提供拦截设置外,哥们也掌控不到)

这里就得说了,你要开了规则限制,等于全局拦截检测了,网速难免会慢一些的,虽然路由器的算法很高效。

 

所以,下一次增加的功能,应该会从路由表出发,限制特定的IP,到鬼门关去,让它回不来。

 

另外要说一下的,经常电信或其它宽带会弹广告,我们习惯性的会说,是DNS拦截弹的广告。。

我就在想啊。。这DNS拦截,这DNS拦截,最多也就指向新的IP,也不至于能修改数据吧,总不能DNS服务器,还负责帮你请求数据,再插入广告吧?

所以哥是这样想的:能拦截请求的,只有电信或其它宽带网关(它才是数据进进出出的窗口,只有这里拦截,返回时再插入广告)

所以DNS拦截弹广告,是不是错误的让人以为,DNS也能是实现广告返回?

如果DNS真能修改请求后的数据,插入广告,那软件回归DNS拦截,不是更爽朗。。。。 

所以是不是应该换个名,叫电信网关拦截弹广告之类的。。。。 

本人非网络专业,以上对网络的忽悠及见解,纯属个人认知,不代表权威,若有错误的,欢迎批评指正。

 

 

转载于:https://www.cnblogs.com/cyq1162/archive/2012/11/25/2787770.html

你可能感兴趣的文章
在工程中要加入新的错误弹出方法
查看>>
PS 滤镜— — sparkle 效果
查看>>
snmpwalk命令常用方法总结
查看>>
网站产品设计
查看>>
代理ARP
查看>>
go 学习笔记(4) ---项目结构
查看>>
java中静态代码块的用法 static用法详解
查看>>
Java线程面试题
查看>>
Paper Reading: Relation Networks for Object Detection
查看>>
Java IO流学习总结
查看>>
day22 01 初识面向对象----简单的人狗大战小游戏
查看>>
mybatis源代码分析:深入了解mybatis延迟加载机制
查看>>
Flask三剑客
查看>>
Hibernate-缓存
查看>>
【BZOJ4516】生成魔咒(后缀自动机)
查看>>
提高PHP性能的10条建议
查看>>
svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方法...
查看>>
熟用TableView
查看>>
Java大数——a^b + b^a
查看>>
poj 3164 最小树形图(朱刘算法)
查看>>