首页
社区
课程
招聘
[求助]穿透代理
发表于: 2013-5-22 11:39 8966

[求助]穿透代理

2013-5-22 11:39
8966
小菜第一次发帖,最近一直被这个问题整得头疼 ~~希望有懂的师兄师姐,大牛们不惜赐教,谢谢~~
我是想实现 ,C/S模型,服务端穿透代理服务器连接到我的客户端 。
1.思路是:服务端先跟代理服务器建立连接,然后把数据封装到http包传输给服务器,这样代理服务器会把数据转给我的客户端。同理,客户端 也是如此!
2.问题是:但很多代理服务器默认是短连接的,每次数据传输完 ,连接就断开了,第二次传数据就得完全重新跟代理服务器建立连接~~而我又想 一直保持使用 第一次建立的socket! 怎么办啊 这个?

所以:我就是想知道  有没有办法 能够使http 连接一直保持下去!!或者说 完全的 其他的突破代理的方法~~~谢谢了先,真的是没辙了 才发帖的   本人学生  希望各位帮助一下!!!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
设置cookie呢?
2013-5-22 12:01
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
设置cookie呢?

怎么设置?是在 我自己封装的http包中加一个cookie字段? 代理服务器 我肯定是没法设置的
2013-5-22 16:10
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
自己顶 一下~~~
有了解这方面知识的  师兄,帮帮忙啊~~~
2013-5-22 16:25
0
雪    币: 55
活跃值: (75)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
几条思路:
1、加keepalive标志
2、http协议本身并没有规定必须要长连接,所以要使用长连接,还得看代理服务器得支持。
3、不长连接,就使用短连接,判断方法是通过在http头中加某个标志,通过这个标志来识别某个server。
还有,http协议要求一问一答得形式,你如果没有遵循这种形式,也会出错。
2013-5-23 08:58
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
几条思路:
1、加keepalive标志
2、http协议本身并没有规定必须要长连接,所以要使用长连接,还得看代理服务器得支持。
3、不长连接,就使用短连接,判断方法是通过在http头中加某个标志,通过这个标志来识别某个server。
还有,http协议要求一问一答得形式,你如果没有遵循这种形式,也会出错。


加Connection:keep-alive 字段是吧?http1.1协议下 是默认长连接的, 这个时候 突破没问题!但 很多服务器使用http1.0 协议,这个协议下 服务器在转发我的包之后会返回 一个确认包,确认包中包含了Connection:close字段,这样 连接就断开了~现在遇到的就是这个问题~
2013-5-23 09:26
0
雪    币: 55
活跃值: (75)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
7
代理使用的http版本是由你自己规定的,除非代理服务器就只支持1.0
2013-5-23 10:12
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jpy
8
为啥一定要长连接?
短连接不也一样么,除了费socket
2013-5-23 21:19
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
为啥一定要长连接?
短连接不也一样么,除了费socket


确实是可以实现, 但繁琐,而且不稳定!
第一想法 还是想用长连接,如果 实在没辙了 只能试试改用短的
2013-5-24 08:38
0
雪    币: 84
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
http connect
2013-5-24 09:08
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
http connect


HTTP CONNECT 只有HTTP1.1支持,实现确实比较简单,但局限性大!我想做个通用性强一点的  能穿透明的,匿名的,高匿的~~~~
2013-5-24 11:30
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
自己 再顶一下~~~大牛们 帮帮忙啊~~~
2013-5-27 08:48
0
雪    币: 55
活跃值: (75)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
13
说白了,你就是想给某部门做马吧?想通杀,又想简单,没那么容易啊!
2013-5-27 16:54
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
说白了,你就是想给某部门做马吧?想通杀,又想简单,没那么容易啊!


因为要毕业了 跟着研究生师兄做项目,分给我的一块任务,当练练手~~~没接触之前以为就编编程,没啥难度,接触之后才发现  主要是没思路!就像你说的  又想做好,又想简单~~哎!看来真不是那么容易, 那就往复杂里写吧~~~
2013-5-27 17:06
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
CONNECT 模式肯定是最高效的,但是BLUECOAT,IRONPORT这种升级后,你要在CLIENT端加一些东西才能KEEP-ALIVE,不然即使是CONNECT+KEEPALIVE,他也是当短连接处理,直接加个KEEP-ALIVE是不行的。未升级的BLUECOAT这些很好穿,SQUID你还可以伪造日志。
还有就是当具有协议识别的防火墙和其他设备如WEBSENSE和BLUECOAT组合的时候,你CONNECT走的非SSL协议的话,怕是穿不出来,WEBSENSE这种直接有警告到日志。如果设置了设备对SSL流量进行了介入,你走SSL协议但是里面不是HTTP协议,你也穿不出来。
因为代理认证模式的关系,CONNECT认证时候的密码这些还得你去手工设置。这就是CONNECT的一些弊端。

用户态+WININET倒是啥代理都可以穿,认证也不用你考虑,但是问题又来了,WININET是短连接。你优化一下算法的话,倒是能达到CONNECT 20,30%的效率。因为是短连接,所以比如你执行一条命令,可能会请求几十次,更别说你开个SOCKS代理,登个3389啥的了。这个在日志里面是个大问题。
BLUECOAT也有黑白名单的问题,这个倒不是是啥大麻烦。

我给你的建议是  先上个异步的WININET的马,比如10,30分钟回来请求一次命令。再上个侦测代理服务器的东西,测试代理服务器的各种情况。根据情况再上快马。

最后像你说的 可以 实现 WININET+长连接 并且还解决了日志问题 还过黑白名单的 技术有没呢,答案是有的,而且做到用WININET连一个URL实现长连接,并且日志上还不出来啥异常。因为一些你懂的原因,所以不便公布,但是都是基于公开的方法,不过思路上有点创新。
2013-7-21 17:34
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
代理服务器是自己建的还是别人的?
如果代理很多的话,做个扫描功能,过滤出支持1.1的代理嘛
2013-7-21 18:25
0
游客
登录 | 注册 方可回帖
返回
//