首页
社区
课程
招聘
那种是得到用户访问网址的最好解决方案?
发表于: 2013-9-30 11:41 12012

那种是得到用户访问网址的最好解决方案?

2013-9-30 11:41
12012
我要拦截用户访问的网址,来把用户加入到不同的主题聊天室,请问那种是得到用户访问网址的最好解决方案?
1.通过LSP拦截浏览器发送的每个域名和二级 三级域名来过滤,这种我测试之后对网速有一定影响,这种似乎不是最好的解决方案,优点是方便用户,傻瓜式。
2.通过得到每种浏览器的历史记录,来得到域名,但是这种是针对每种浏览器要做访问,如果用户安装多个浏览器,会有些麻烦,缺点是要不停的访问历史记录并判断,对CPU 内存有些占用,同时客户端要做一系列处理来操作,优点是不影响网速。
3.驱动过滤来得到域名,缺点是要在驱动里做过滤,会对网速有一定影响,还有就是网吧现在都限制加载驱动,会对网吧用户有一定影响,优点应该是速度快,拦截准,而且可以实时过滤,例如360的网络拦截。
4.直接注入每种浏览器,优点是不影响网速,拦截准确方便,缺点是要针对每种浏览器做拦截。

我所做的网际直聊,这种外挂式社交工具,现在针对HTTPS 拦截不到,二级域名不好过滤,请问大家给推荐下好的网址拦截过滤解决方案,还有就是如何过滤二级域名,因为很多网站会发送一个图片或者一个垃圾的二级域名  三级域名到服务器,我拦截到这些东西之后跟有用的二级域名不好过滤,还有就是我不知道HTTPS如何拦截,似乎拦截不到,请大家指教下,非常感谢。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
用LSP过滤的话,如果只是判明是否http包并快速取出host以及target,不做其他什么工作的话,应该不怎么影响网速的
另外,还可以考虑获取加载dll的进程名,只关注几个特定的进程:iexplorer.exe,chrome.exe,firefox.exe,其他的进程,就不做过滤了,这样至少不会影响其他程序

不过LSP还要分别做x86,x64版

取浏览器记录的话,有些浏览器不好取,还有的浏览器不保留历史记录,这个是个问题呢
2013-9-30 12:02
0
雪    币: 25
活跃值: (477)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
3
LSP里怎么判断是否是 HTTP包  IE进程呢?
2013-9-30 12:51
0
雪    币: 25
活跃值: (477)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
4
另外  HTTPS怎么拦截,这个我始终拦截不到。
2013-9-30 12:52
0
雪    币: 25
活跃值: (477)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
5
LSP和客户端代码包 以上传,对网速还是有点影响的,我过滤了WWW的顶级域名,和不带WWW的顶级域名,现在似乎有点卡,大家看下。
2013-9-30 13:04
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
HTTPS 要用中间人。 假证书的。
2013-9-30 13:14
0
雪    币: 66
活跃值: (203)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
你是想说 CustomProtocol://1 这样么
是的话,注册一个URL协议就行
2013-10-2 23:32
0
雪    币: 75
活跃值: (738)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
用浏览器已有的机制,比如ie的bho,lsp 驱动是不是重了点
2013-10-5 11:40
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
ndis dns包+http包可以还原出来完整链接的
2013-10-5 22:30
0
雪    币: 25
活跃值: (477)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
10
LSP不重啊,关键是二级域名没办法过滤。
2013-10-6 15:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
---判断是否IE进程---
比如制作了一个lsp的dll:net.dll,注册之后,ie、chrome等程序加载winsock时会把这个net.dll也加载进来,这时在DllMain里面获取下当前模块名称就可以拿到进程名了。
如果发现当前进程不是目标程序,可以不做处理,直接转发,或者放弃挂钩(这个没试过)

BOOL APIENTRY DllMain(_In_ HANDLE hDllHandle, _In_ DWORD dwReason, _In_opt_ LPVOID lpReserved)
{
        switch (dwReason)
        {
        case DLL_PROCESS_ATTACH:
                {
                        TCHAR appname[MAX_PATH] = {0};
                        ::GetModuleFileName(NULL, appname, MAX_PATH);

                        InitHookers(appname);

                        break;
                }
        case DLL_PROCESS_DETACH:
                break;
        }

        return TRUE;
}

---判断是否http---
可以考虑截取发送或接收包的头N个字符,参考http协议对于包头的要求,我之前的做法就是检查http包头的第一行是否符合要求,比如:是否POST GET 等等

仅供参考
2013-10-8 11:41
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
12
楼主还在做聊天啊.
2013-10-8 12:23
0
雪    币: 48
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
楼主,我觉得你这样做太过麻烦。lsp拦截不是很好的方法。因为你自己也要处理http。
我觉得用Fiddler core 来捕获最好不过方法。简单,而且得到信息足够多。
你在他发送请求之前获取对应的网址,就Ok了。应该这样就能够捕获到https.
至于二级域名的话我不知道他自己处理没有,不好说。
你自己看看了解一下,估计没有问题。
2013-10-8 14:07
0
雪    币: 25
活跃值: (477)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
14
问题是,我不想用驱动,因为现在网吧都限制驱动,我的软件没那么出名,如果用了驱动,网吧基本就放弃了。
2013-10-8 22:04
0
雪    币: 25
活跃值: (477)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
15
Fiddler core
这个东西不知道需要驱动不 ?
2013-10-8 22:14
0
雪    币: 48
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
不需要,只是dll. 但只能使用c# 开发。
但c++ 可以调用c#代码。

检测是不是在输入框里面连接估计不好弄。。

因为fillder原理设置代理,所有数据包都通过它,所以他应该也不知道哪些是用户输入,还是多级链接。
2013-10-11 13:21
0
雪    币: 25
活跃值: (477)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
17
设置代理,这个方法不错,是在本地设置代理吗?我也这么搞个DLL。
2013-10-12 12:58
0
雪    币: 77
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
mark
2014-5-28 22:37
0
游客
登录 | 注册 方可回帖
返回
//