socks 2 http 编程问题! (120分)

  • 主题发起人 主题发起人 coolbaby
  • 开始时间 开始时间
要服务器端是肯定的
 
TO iambest:
谁说不用服务器端了?
 
唉,post的数据是能收到了
就是服务端返回有点问题

还有,收到post的数据
有时候是直接跟在http头下面,同一个包
有时候,又是单独的一个包,
唉,这怎么办
 
POST到服务器的HEADER后面两个回车(0D0A0D0A)后跟的是数据,在数据开始前加个你
自己定义的标志头(一串特定字符)来表示是你的客户端发来的,以及下面跟的是数据,
就可以了,然后数据嘛,建议自己定义个包格式,如LEN(2BYTE)DATA,先收RECEIVE 一
个WORD的数据,看看应该等多少数据,之如此类,自己慢慢摸索吧,我也只是作到这步而已
 
to wingerk:
谢谢,我也是象你那么做的呀
A端通过服务器发的,B端(监听80)能收到
但是B端如何返回数据给A端呢?
要断开连接,那A不是也要监听80端口?
欢迎讨论
 
你有qq号么?
另外, flywhc好象是做过,至少挺了解http
不知道能否告知他的联系方式,qq等,交流一下

还有,想msn等,数据是这么post出去的,但是象socksonline的数据包里
根本就没有post等http,好象是直接通过https协议做的
可惜么这方面的资料
 
1、我不认识flywhc,这段是从CSDN找的
2、要两条TCP连接为一对,POST是客户端发数据给服务器,GET是客户端从服务器收数据
3、HTTPS应该资料不少,用GOOGLE查查看,或者再开个帖子问问
4、我很久不用QQ了
5、我有个朋友,以前做过一套IM系统,可以通过HTTP代理,他是用DELPHI的哪些个HTTP
支持控件作的,好象是WEBSNAP之类吧,我不太懂,你可以去WWW。51DICO。COM下一个DICO,
或者登陆论坛,然后,找西狗、WESTDOG、LJX之类的ID,可以联系上他,8-),麻烦吧。
6、还有,最近我用了一下SYNAPSE(OPENSOURCE的一套TCP/IP库),发现他支持通过
HTTPTUNNEL连到外面INTERNET的,我不清楚这个HTTPTUNNEL到底是什么,下面是她关于
和HTTPTUNNEL连接的代码:
procedure TTCPBlockSocket.HTTPTunnelDoConnect(IP, Port: string);
//bugfixed by Mike Green (mgreen@emixode.com)
var
s: string;
begin
try
FBypassFlag := True;
inherited Connect(FHTTPTunnelIP, FHTTPTunnelPort);
if FLastError <> 0 then
Exit;
FHTTPTunnel := False;
SendString('CONNECT ' + IP + ':' + Port + ' HTTP/1.0' + #$0d + #$0a);
if FHTTPTunnelUser <> '' then
Sendstring('Proxy-Authorization: Basic ' +
EncodeBase64(FHTTPTunnelUser + ':' + FHTTPTunnelPass) + #$0d + #$0a);
SendString(#$0d + #$0a);
repeat
s := RecvTerminated(30000, #$0a);
if FLastError <> 0 then
Break;
if (Pos('HTTP/', s) = 1) and (Length(s) > 11) then
FHTTPTunnel := s[10] = '2';
until (s = '') or (s = #$0d);
if (FLasterror = 0) and not FHTTPTunnel then
FLastError := WSASYSNOTREADY;
FHTTPTunnelRemoteIP := IP;
FHTTPTunnelRemotePort := Port;
finally
FBypassFlag := False;
end;
ExceptCheck;
end;
执行这个函数之后,就可以和主机(IP, Port)连接,它用的‘CONNECT’我不清楚是什么,
不知道是不是HTTPS或者HTTP新加的东东,你可以到http://www.ararat.cz/synapse/下载一个,
试试。我这里没有HTTP代理,所以没有办法试,8-(
 
1。我找过https的资料,但是可用的不多,另外,你贴的那个http tunnel其实就是用https
即所谓的http通道,里面的connect 是https的协议,rfc里有,不过没说具体用法,晕。
2.你没用qq,那总有别的联系方式吧。比如email,msn什么的,你用cby@dhc.com.cn和我联系
吧。多交流交流。
3.dico我以前用过,后来删了,:)
 
另外,能否告知那篇csdn截下来的全文地址
 
呵呵,用DICO有机会碰到我,我的ID也是WINGNERK
那文其实是我前面提的那个共雨果写的文章后面跟的评论,具体位置不记得了,你去搜索
一下应该可以找到,我当时就是搜索出来的。
你可以试试SYNAPSE,如果可以用务必要在这里说一下心得。
按它的说明,应该要装多一个OPENSSL。DLL吧,而且还要PROXY支持了。
我的EMAIL:wingerchen@163。com
 
晕倒,我在dico上找不着WINGNERK
小写也不行,号码是多少?
 
真失败,csdn上也没找到文章
共雨果这个人也没找到
:(
 
https是安全http协议,是ssl协议在http协议上的实现,在http协议下传输经过加密的数据.
connect 指令是发给代理服务器的指令,代理服务器通过他指定的地址和端口号连接远程服
务器,其后执行客户端的http指令,也可以执行服务器端特定的指令,也就是实现socket代理
连接.
 
rfc上说的也是这么简单
急需更详细的资料
 
哈哈,晕,说错了,是WINGER
又说错了,是共译名
http://www.csdn.net/Develop/Read_Article.asp?Id=12822
MACOR说的挺明显,估计CONNECT就是提供一种TCP MAP的功能,有时间再看看RFC
 
connect 是https里的命令,象我们公司这种环境,连nat都不好使
就是地址不转换,但是只要支持https ,还是可以用connect来模拟tcp连接
rfc里好象,也就讲到这么多
但是如何用connect,我还没找到
socksonline就是这么做的
 
找到线索了,在
http://www.web-cache.com/Writings/Internet-Drafts/draft-luotonen-web-proxy-tunneling-01.txt
看看下面摘录的内容,注意最后一行,呵呵,激动吧,8-),摸索出来要告诉我啊。
. Extensibility

The tunneling handshake is freely extensible using the HTTP/1.x
headers; as an example, to enforce authentication for the proxy the
proxy will simply use the 407 status code and the Proxy-authenticate
response header (as defined by the HTTP/1.x specification) to ask the
client to send authentication information:

HTTP/1.0 407 Proxy authentication required
Proxy-authenticate: ...


The client would then reperform the request, and send the
authentication information in the Proxy-authorization header:

CONNECT home.netscape.com:443 HTTP/1.0
User-agent: ...
Proxy-authorization: ...

...data to be tunnelled to the server...


The full example displayed in an interleaved multicolumn format:

CLIENT -> SERVER SERVER -> CLIENT
-------------------------------------- -----------------------------------
CONNECT home.netscape.com:443 HTTP/1.0
User-agent: Mozilla/4.0
<<< empty line >>>
HTTP/1.0 407 Proxy auth required
Proxy-agent: Netscape-Proxy/1.1
Proxy-authenticate: ...
<<< empty line >>>
CONNECT home.netscape.com:443 HTTP/1.0
User-agent: Mozilla/4.0
Proxy-authorization: ...
<<< empty line >>>
HTTP/1.0 200 Connection established
Proxy-agent: Netscape-Proxy/1.1
<<< empty line >>>
<<< data tunneling to both directions begins >>>


 
太好了
其实我了解的和上面差不多
不知道下面的双向传输,数据要怎么定义 ?
他怎么也不举例?
试出来一定告诉你
 
wingerk,
我已经搞定了
连接成功后直接发数据就可以
 
后退
顶部