开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 8101|回复: 30
收起左侧

[原创软件] HttpProxy 代理服务器

[复制链接]
发表于 2018-8-7 21:32:26 | 显示全部楼层 |阅读模式   浙江省台州市
软件展示
在线分析报告: https://habo.qq.com/file/showdetail?pk=AD0Gbl1pB28IPls8
本帖最后由 aiksie 于 2018-8-8 18:06 编辑

前言:
写这个软件的根本原因就是用了中国移动的宽带产生的烦恼,移动这个宽带是真的不行,100兆的宽带看个视频有时还卡,更加不要说玩游戏了。手机上网看网页时不时的弹窗弹中国移动的广告(移动运营商投放的广告),通过查看代码还发现了一个IP地址竟然是登录 信息推送策略管理平台,真的是有图有真相。
QQ截图20180807201845.png

首先想到的办法就是找客服,找了几次客服反映都没用,当然也不想闹大也就想着自己能不能拦截这个广告,之后想到修改dns,不仅修改了路由器的dns还有手机里的,但是发现没有什么卵用,之后又用了HTTP代理,结果依然没什么卵用,网页还是被劫持了,主要是网页被插进了几段弹窗的代码,明明用的HTTP代理,可中国移动还是能劫持网页,简单来说我们上网还是要经过宽带运营商的路由器,用了HTTP代理还是改变不了这个事实,之后又想到修改hosts,结果改了之后发现那个弹窗的框框还在,后来就想到写个HTTP代理服务器过滤掉那些代码,当然也就自然而然的通过百度知道了一个东西:“高性能网络通信框架HP-Socket" ,关键里面还有易语言的例子(demo)、易语言模块、支持库等等,对于只会易语言的我,给了我很多的想法,这个HP-Socket真的很好很强大,最主要的是它的源码已经开源了,里面虽然也有HttpProxy相关的源代码,但并没有易语言版本的,但是他提供的成品在我测试了之后发现了非常满意,也就想着把C++的代码翻译成易语言的代码,对于我这个只会点易语言代码的人真的是有点困难,好在C++的代码也并不难理解,经过OD的分析也一步一步的将它转换成了易语言的代码,当然在写出来后也有一种成就感,原先用tcpserver、tcpagent组件写过,但是用起来效果就没那么好了,有的网页元素竟然还不显示,有些图片还加载不出来,最后用的是,httpserver+tcpagent组件写的,也就是参考demo2 里面的代码,区别是采用异步 Connect,在写的过程中也遇到了一个问题,就是怎么写都不能正常打开网页,后来通过检查代码和查错GetLastError这个命令,不断的调试代码也就找到了原因,发现了TcpAgent.Send 这个函数是怎么试也都是返回假,后来在 TcpAgent.Start 函数不用 异步 Connect 方式,倒是返回真了,之后想了一下原因在TcpAgent.Send 函数前面加了个延时代码,网页也能够正常打开了,其实主要还是因为WaitForSingleObject那段代码被我遗弃了。








以下是经过服务器以及本机测试的图片:
QQ截图20180807193852.png
QQ截图20180807194033.png
同时也通过了手机上的测试,比如访问网页、看优酷视频、腾讯视频、龙珠直播等等

QQ图片20180807210541.jpg

HttpProxy 代理服务器当然是支持HTTPS的,可以正常的访问HTTPS的域名

发帖时也用了HttpProxy 代理服务器 开启的HTTP代理,不得不说HP-Socket 真的很强大

QQ截图20180807211147.png

还写了一个小功能:IP限制白名单,也就是在IP白名单里的IP地址才可以正常使用软件。
QQ截图20180807211929.png QQ截图20180807211953.png QQ截图20180807212047.png QQ截图20180807213045.png
在写的过程中还遇到了一个问题,就是THttpContext 这个结构体,我发现怎么弄,怎么改都有问题
HttpServer.SetConnectionExtra (pSender, dwConnID, pExtra)  在模块里面pExtra是一个整数型,但是在c++源代码里好像是一个结构体、一个指针,我就试着把pExtra 这个整数型修改成了这个结构体,发现怎么改都有问题,后来只能用自己的办法解决。


1.1版本更新原因:
在测试的过程中,我发现有些请求并没有响应,从而造成软件假死现象,也就无法继续处理其他的请求,在测试打开优酷网站的时候,我发现以我100兆的网速竟然无法秒打开优酷的网站,不用这个软件的代理的时候可以秒打开,这就有问题了,360浏览器提示 正在等待代理隧道的响应,而且就卡在这个地方,网页还在等待这个响应,经过一系列的调试我发现了一个问题,优酷请求了一个网址:localhost.iku.youku.com 通过ping 域名发现被解析到了127.0.0.1,当然不可能是我修改了hosts,而是它解析的A记录就是127.0.0.1,不仅仅是127.0.0.1的问题,它的端口也是负数的,因为这样的原因,请求并没有成功,因为用的是异步请求,用的WaitForSingleObject 函数,这个函数因为收不到响应的信号,导致软件会出现假死或者系统CPU飙升,主要因为我没有对请求的域名、端口做一个判断,如果是 127.0.0.1 或者 端口为负数的则直接断开请求。
1.1 版本更新内容:
1.增加对请求到的网站的IP地址和端口做了逻辑判断,在使用本软件代理的时候可以提高对网站的响应速度。

下载地址更新:https://share.weiyun.com/5FccaMl
HttpProxy代理服务器(1.1版本).zip (1.56 MB, 下载次数: 187)
QQ截图20180807194404.png

点评

你的需求其实很简单 全局的*** + 加密的协yi通信 类似ss 酸S乳 socket4还是socket5自己选择   广东省广州市  发表于 2019-1-24 15:24

评分

参与人数 4好评 +2 精币 +3 收起 理由
酱叮当 + 2 感谢分享,很给力!~
hanyxiang + 1 你以为这样我就看明白你在说什么了吗
空竹 + 1 感谢发布原创作品,精易因你更精彩!
北冥 + 1 感谢分享,很给力!~

查看全部评分


--------------------------优秀帖点我申请--------------------------
违规软件信息请点击帖子右下角举报按钮。
 楼主| 发表于 2018-8-27 18:04:03 | 显示全部楼层   浙江省台州市
自动拦截中国移动弹窗广告的改进:后来我发现只要直接返回#HR_ERROR,软件就会重新发送一次请求,中国移动弹窗广告不是每一次都有,只要检测到相关的字符,重新请求一次就可以达到屏蔽广告的目的。


QQ截图20180827175704.png



点评

这是nei网代理的解决办法,因为nei网代理是在同一个网络环境,也是向宽带运营商请求数据,所以被篡改的网页数据会经过nei网代理,这样是可以拦截到被篡改的数据,重新发一次请求就能够防止被宽带运营商劫chi了   浙江省台州市  发表于 2018-8-30 13:56
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-30 14:27:03 | 显示全部楼层   浙江省台州市
通过外v网代理要怎么拦截宽带运营商的http网页劫v持?这个问题我想了很多次,也实验了很多次,最后也解决了。用户通过宽带运营商向外v网请求数据,外v网向宽带运营商发回了一个正常的数据但是被宽带运营商给篡改了数据,再把这个已经修改了的数据发给了用户,用户当然也会去请求这个篡改后的网页,而通过这个代理软件可以根据关键字检测出被劫v持的网页,通过window.top.location.href = 原网址,成功搞定。原先的代码根本就是错误的,想法是好的,但是进入了误区,后来了百度了一下,
"window.location.href"、"location.href"、"self.location.href"是本页面跳转
"parent.location.href"是上一层页面跳转
"top.location.href"是最外层的页面跳转
通过window.top.location.href = 原网址 跳转回原网址这样就能解决网页被劫v持的问题,外v网代理虽然不能拦截被篡改的代码,但是也可以在请求这些网址的时候跳转回未被劫v持的网页。。
其实路由器完全可以实现拦截宽带运营商劫v持的功能。

GET /wl/0511.html HTTP/1.1
Host: 39.106.248.155
Referer: 原请求的网址
Connection: keep-alive
Upgrade-Insecure-Requests: 1
X-Requested-With: com.qq.reader
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Mozilla/5.0 (Linux; Android 8.0.0; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.98 Mobile Safari/537.36V1_AND_SQ_5.0.1 QQReader
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Language: zh-CN,en-US;q=0.8

QQ截图20180830134807.png



回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-4 11:09:24 | 显示全部楼层   浙江省台州市
QQ截图20180904110457.png

点评

默认宽带运营商劫chi过滤规则 = 浙江移动宽带   浙江省台州市  发表于 2018-9-4 11:12
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-9 21:37:39 | 显示全部楼层   浙江省台州市
1.6版本更新原因:
原先就一直有一问题,就是用IE内核浏览器不停刷新网页,会导致软件假死,停止服务出现tcpagent无法停止,之后用了一个加延时的方法,这个方法治标不治本,后来发现HPSocket开源代码里的成品软件并没有这个问题,但是写法又是没啥错的,经过多次的查找原因,发现是许可证的问题,写法也是照那个成品软件,ollydbg看到的代码写的,但是一个有问题,一个没问题,最后将ConnectToServer子程序里的许可证缩小了范围,困扰多时的问题原来就是因为许可证。
1.6版本更新内容:
1.重新启用win10皮肤,软件运行内存都有了很好的解决办法,1是定时重启,2是利用微软一个工具进行释放内存
2.彻底解决软件因频繁刷新网页出现的软件假死无响应问题,通过模拟鼠标不断点击刷新网页测试了几次,频繁不间断的刷新网页肯定会对软件产生影响,在刷新网页期间会出现无法正常打开网页的情况,默认加延时模式可以缓解不停刷新网页带来的压力,1.6版本有了更好的体验。
3.给软件加了一个测试代码签名证书。
4.更新最新版本HPSocket4C.dll,使用最新版本模块进行编译。


为了能让软件使用者能够获得更好的体验,对软件也在不断的进行优化和更新。哈勃分析:
https://habo.qq.com/file/showdetail?pk=ADwGZF1vB24IP1s%2B
下载地址:
https://share.weiyun.com/590LkWY



回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2019-9-6 09:29:25 | 显示全部楼层   湖北省咸宁市
楼主你好,我最近也在研究 hp 的代理,首先很感谢你发的最初的版本的源码,对我有很大启发,也让我对 Hp 有了初步的了解。不过我对 socket 一知半解,分包组包还有怎么判断一个包的完整性这些都还不太明白,查了很多资料,说是 hp 的 pack 模型 把分包组包 等处理都已经做好了,可是 我用这个模型试着写了一个怎么都获取不到包,后来想着能不能用 HttpServer 和 HttpAgent 写一个能,这样就不用去关心包的完整性问题了,试玩之后发现并没我现象的那么简单,请问楼主客户端部分只能用 TcpAgent 或者是 TcpPullAgent 来写吗?总觉得应该客户端组件都可以用才对,但是尝试了几次都不成功有点疑惑,不知道楼主有没有时间 整理一份可用的源码出来供我等小白参考学习,感谢。我的邮箱:121970609@qq.com
回复 支持 反对

使用道具 举报

发表于 2019-6-23 11:42:10 | 显示全部楼层   江苏省无锡市
有没有dos命令启动服务的?,嘿嘿嘿,我想配置好了后,使用dos命令启动服务,我想隐藏界面和任务栏图标
回复 支持 反对

使用道具 举报

结帖率:83% (5/6)

签到天数: 29 天

发表于 2019-3-20 14:54:51 | 显示全部楼层   广东省深圳市
东西很好用,请问dll插件可以增加个网络转发吗?比如所有www.baidu.com网站转发到www.qq.com
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2018-9-9 22:00:05 | 显示全部楼层   浙江省杭州市
这么强大的东西,以后肯定会用到的~先留名
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-1 21:02:21 | 显示全部楼层   浙江省台州市
本帖最后由 aiksie 于 2018-9-2 11:50 编辑

1.4版本:
增加Http劫v持过滤规则源码,软件会自动接入Rule.dll,用户可以自己编写Http劫v持过滤规则。


哈勃分析:https://habo.qq.com/file/showdetail?pk=ADwGZ11oB28IPls5
下载地址:https://share.weiyun.com/5Oapchy
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-28 21:21:04 | 显示全部楼层   浙江省台州市
本帖最后由 aiksie 于 2018-8-29 20:17 编辑

nei网代理得到被宽带运营商篡改的数据后可以通过nei网代理进行过滤, 但是wai网代理返回的数据会被宽带运营商篡改数据,直接返回篡改的数据给用户 。
用户 → nei网代理 → 宽带运营商 → nei网代理 →用户
用户 → 宽带运营商 → wai网代理 → 宽带运营商 → 用户
经过测试原先的办法只能在nei网才有效,而wai网的代理因为不在一个网络环境内,最后被宽带运营商篡改的数据是不会通过wai网的代理返回,而是直接返回给用户


QQ截图20180829084401.png
我觉得路由器完全有能力做到拦截宽带运营商的http劫chi。
使用代理软件上网,上网速度也会受到影响,无论是路由器还是代理软件,上网速度都会多多少少受到影响!



点评

这里代码搞错了   浙江省台州市  发表于 2018-8-30 13:56
也可以说对于宽带运营商,用户上网是没有任何隐私的   浙江省台州市  发表于 2018-8-28 21:26
回复 支持 反对

使用道具 举报

结帖率:92% (48/52)

签到天数: 25 天

发表于 2018-8-28 18:15:22 | 显示全部楼层   江西省上饶市
aiksie 发表于 2018-8-27 17:50
1.3版本更新原因:
软件不完善,很多方面的写法都有点问题,更加仔细的测试了很多个环节,考虑到各种方方 ...

支持你!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表