标签: socks

是否可以通过 websockets 或其他协议传输 TCP 连接?

我想知道,是否可以通过 websockets 协议传输/隧道 TCP 连接?

有一个websockets 包,似乎我可以将 TCP 连接 io.copy 复制到 websockets 连接中,但我不知道如何在另一端将其重新组装为 TCPConn。

例如,我想在一端创建一个 socks5 ServerN(在 NAT 后面),在另一端创建一个 ServerIE。互联网用户会向 ServerIE 发出socks5 请求(通过socks5 协议),ServerIE 会通过websocket 连接将socks5 请求发送到ServerNAT。ServerNAT 然后将处理socks5 请求(即它是socks5 服务器)。

编辑: 我写了一些代码,但不幸的是它在从 TCP 连接读取到 WS 时卡住了。运行它:go run main.go -logtostderr

package main

import (
    "flag"

    log "github.com/golang/glog"
    "golang.org/x/net/websocket"
    "bufio"
    "net"
    "net/http"
    "time"
//  "io"
)

func main() {
    flag.Parse()
    defer log.Flush()
    log.Infof("wsServer()")
    wsCh := wsServer()
    log.Infof("wsNAT()")
    natWS, err := wsNAT()
    if err != nil {
        log.Error(err)
        return
    } …
Run Code Online (Sandbox Code Playgroud)

tcp go socks websocket

8
推荐指数
1
解决办法
2529
查看次数

通过 SOCKS5 代理连接到 .NET Web 服务

我正在尝试通过 SOCKS5 代理连接到 Web 服务。目前,我的app.config如下:

<system.net>
 <defaultProxy enabled="true"  >
  <proxy proxyaddress="http://xxx.xxx.xxx.xxx:yyyy" bypassonlocal="True" />
 </defaultProxy>
</system.net>
Run Code Online (Sandbox Code Playgroud)

这对于 http 代理来说效果很好,但它只是不能连接到 SOCKS5 代理。我在谷歌上广泛搜索答案,但找不到解决这个问题的人,尽管我已经发现这个问题好几次了。有人知道我该怎么做吗?

.net c# proxy web-services socks

7
推荐指数
2
解决办法
7754
查看次数

使用 Charles Proxy Socks 功能调试 iPhone 流量?

我正在尝试使用 Charles Proxy 来调试 iPhone 上的一些性能问题。我使用“http 代理模式”完成了所有工作,但使用“socks 代理模式”失败。由于 iOS 在 http 代理下表现出与现实生活中不同的行为(请参阅http://www.charlesproxy.com/documentation/configuration/proxy-settings/),我真的很想让袜子代理工作。

在我的 iPhone 上配置了 socks 代理后,我无法连接到任何站点,并且在运行 Charles 的机器上嗅探表明,每当我尝试连接时,我都会重置。我错过了什么步骤?

关于如何使其在 Mac 或 Windows 上工作的解释将不胜感激!

iphone socks charles-proxy

7
推荐指数
2
解决办法
5229
查看次数

代理 - 将HTTP请求转换为SOCKS5

我目前正在使用TOR进行一些测试工作并遇到了一个小问题.Tor的客户端仅支持通过SOCKS5协议接收连接,但我使用的应用程序仅支持HTTP Proxy Protocals.

是不是可以把东西放在中间?所以它就这样了.

我的程序(仅限HTTP)> HTTP到SOCKS转换器> Tor SOCKS5服务器

谷歌搜索了相当多的信息,我找到了SOCKS到HTTP的信息,但不是相反.任何帮助表示赞赏,谢谢!

proxy http tor socks

7
推荐指数
1
解决办法
9063
查看次数

如何使用TurnSocket(XEP-0065:SOCKS5 Bytestreams)连接?XEP-0096:SI文件传输?[socket writeData]?

我正在尝试使用XMPPFramework和OpenFire通过iOS上的XMPP进行文件传输.我的代码基础来自以下教程.我有一个成功的TurnSocket(XEP-0065:SOCKS5 Bytestreams)连接,但我无法工作如何使用它来发送数据.我有两个注意事项,我都坚持这两个:1.调用[socket writeData]和2.使用'XEP-0096:SI文件传输'.

可能的解决方案1 ​​ - 调用[socket writeData] 在我的App委托中,我有一个didSucceed方法.我可以像这样调用[socket writeData] ...

- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket {

    NSLog(@"TURN Connection succeeded!");

    [socket writeData:myData withTimeout:60.0f tag:0]; 
    [turnSockets removeObject:sender];
}
Run Code Online (Sandbox Code Playgroud)

6月14日更新:这是正确的吗?如果是这样,其他用户如何读取数据?我试过实施

- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
Run Code Online (Sandbox Code Playgroud)

但它永远不会被召唤.我如何确保它被调用?

可能的解决方案2 - XEP-0096:SI文件传输 我是否需要使用XEP-0096:SI文件传输?如果是这样,我如何在我需要形成的XEP-0096 XML中使用我的成功连接?在XEP-0096文档意味着有一个"哈希"属性,但我不知道该从何而来.

例如

<iq type='set' id='offer1' to='receiver@jabber.org/resource'>
  <si xmlns='http://jabber.org/protocol/si' 
      id='a0'
      mime-type='text/plain'
      profile='http://jabber.org/protocol/si/profile/file-transfer'>
    <file xmlns='http://jabber.org/protocol/si/profile/file-transfer'
          name='test.txt'
          size='1022'
          hash='552da749930852c69ae5d2141d3766b1'
          date='1969-07-21T02:56:15Z'>
      <desc>This is a test. If this were a real file...</desc>
    </file>
    <feature xmlns='http://jabber.org/protocol/feature-neg'>
      <x xmlns='jabber:x:data' type='form'>
        <field var='stream-method' type='list-single'> …
Run Code Online (Sandbox Code Playgroud)

xmpp file-transfer asyncsocket socks xmppframework

7
推荐指数
1
解决办法
2703
查看次数

在Python中使用SOCKS5代理代理UDP

是否可以使用任何SOCKS客户端lib在Python中通过SOCKS5代理发送UDP数据报?SocksiPy似乎没有用,或者我只是错误地使用它.以下代码不起作用,它尝试直接连接到目标:

s = socks.socksocket ( socket.AF_INET, socket.SOCK_DGRAM )
s.setproxy(socks.PROXY_TYPE_SOCKS5,"socks.proxy.lan")
s.sendto ( payload, ( ip, port ) )
Run Code Online (Sandbox Code Playgroud)

如果我更改SOCK_DGRAMSOCK_STREAM代码也不起作用,它不会尝试连接任何地方.

python proxy socks

7
推荐指数
1
解决办法
2092
查看次数

设置SOCKS代理配置后CFStream崩溃

下面的代码有什么问题?我使用AsyncSocket连接到SOCKS代理并在onSocketWillConnect委托方法上设置代理设置.如果我省略了调用CFReadStreamSetPropertyCFWriteStreamSetProperty插座式连接器能够顺利跟进.另外,我在一个没有可跟踪堆栈跟踪的解除分配的实例上得到[Not A Type retain](它可能与CFNetwork有关?).有谁知道是什么给出的?

CFDictionaryRef proxyDict = CFNetworkCopySystemProxySettings();
CFMutableDictionaryRef socksConfig = CFDictionaryCreateMutableCopy(NULL, 0, proxyDict);
CFDictionarySetValue(socksConfig, kCFStreamPropertySOCKSProxyHost, CFSTR("192.168.1.148"));
CFDictionarySetValue(socksConfig, kCFStreamPropertySOCKSProxyPort, (__bridge CFNumberRef)[NSNumber numberWithInt:3129]);
CFDictionarySetValue(socksConfig, kCFStreamPropertySOCKSVersion, kCFStreamSocketSOCKSVersion4);

// set SOCKS for read streams
CFReadStreamRef readStream = [sock getCFReadStream];
if (!CFReadStreamSetProperty(readStream, kCFStreamPropertySOCKSProxy, socksConfig)) {
  CFStreamError error = CFReadStreamGetError(readStream);
  NSLog(@"[SEVERE] Web Socket Read Stream Error: %ld[%ld]", error.domain, error.error);
}

// set SOCKS for write stream
CFWriteStreamRef writeStream = [sock getCFWriteStream];
if (!CFWriteStreamSetProperty(writeStream, kCFStreamPropertySOCKSProxy, socksConfig)) {
  CFStreamError error = …
Run Code Online (Sandbox Code Playgroud)

objective-c socks cfnetwork ios cfstream

7
推荐指数
1
解决办法
1088
查看次数

为什么SOCKS5需要通过UDP中继UDP?

RFC1928描述的SOCKS5协议提供对UDP的支持.

总而言之,希望通过SOCKS5服务器中继UDP数据包的客户端必须至少:

  • 打开与SOCKS5服务器的TCP连接;
  • 发送UDP ASSOCIATE请求(参见第4节);
  • 从服务器接收必须发送UDP数据包的地址和端口;
  • 将数据报(UDP)发送到该地址,并使用一些标头封装(参见第7节).

以下是第6节中的一些相关引文:

当UDP ASSOCIATE请求到达的TCP连接终止时,UDP关联终止.

在对UDP ASSOCIATE请求的回复中,BND.PORT和BND.ADDR字段指示客户端必须发送要中继的UDP请求消息的端口号/地址.

第7:

基于UDP的客户端必须在回复UDP ASSOCIATE请求时将其数据报发送到由BND.PORT指示的UDP端口的UDP中继服务器.

为什么这么复杂?为什么不在预先存在的TCP连接中发送UDP数据包?

编辑:为了澄清,我期望SOCKS代理通过TCP流接收UDP数据包,然后使用实际的UDP将它们传输到目标.然后从目标接收UDP数据包并将其发送回TCP流.


这是一些背景.

我的目标是实现反向网络共享,以便Android设备可以使用其插入的计算机的Internet连接,而无需在设备和计算机上进行root访问(SimpleRT可以工作,但需要在计算机上进行root访问).

我的第一个想法是ssh -D在计算机上启动一个简单的SOCKS5服务器,这样我只需要实现客户端.adb由于... 提供的远程端口转发,数据包将从设备传输到计算机adb reverse.

不幸的是,OpenSSH SOCKS服务器不支持UDP.但这只是实施的限制,我本可以使用另一个SOCKS服务器.

但是,adb reverse也不支持UDP转发.

因此我的问题关于SOCKS5协议.

我目前正在编写一个PoC,它通过TCP实现我自己的(简单)协议,它能够中继UDP数据包,但我很失望不能使用标准协议(并从现有实现中获益).

networking udp tcp rfc socks

7
推荐指数
1
解决办法
7196
查看次数

C# HttpClient 是否支持socks4/5 代理?

我可以使用以下代码设置http代理:

public class CustomFlurlHttpClient : DefaultHttpClientFactory {
    public override HttpClient CreateClient(Url url, HttpMessageHandler m) {
        return base.CreateClient(url, CreateProxyHttpClientHandler("http://192.168.0.103:9090"));
    }

    private HttpClientHandler CreateProxyHttpClientHandler(string proxyUrl, string user = "", string passw = "") {
        NetworkCredential proxyCreds = null;
        var proxyUri = new Uri(proxyUrl);
        proxyCreds = new NetworkCredential (user, passw);
        var proxy = new WebProxy (proxyUri, false) {
            UseDefaultCredentials = false,
            Credentials = proxyCreds
        };
        var clientHandler = new HttpClientHandler {
            UseProxy = true,
            Proxy = proxy,
            PreAuthenticate = true,
            UseDefaultCredentials = false …
Run Code Online (Sandbox Code Playgroud)

c# proxy socks dotnet-httpclient flurl

7
推荐指数
2
解决办法
1万
查看次数

通过 SOCKS Proxy 连接到 Kafka

我有一个在 AWS 上运行的 Kafka 集群。我想从我的应用程序服务器使用标准的kafka-console-consumer连接到集群。应用服务器可以通过 SOCKS-Proxy 访问互联网。无需身份验证

如何告诉 Kafka 客户端通过代理连接?

我尝试了很多方法,包括将标准的 JVM 代理参数添加到kaka-run-class.sh脚本中。但我仍然收到连接拒绝错误。

exec $JAVA -DsocksProxyHost=proxy.host.name -DsocksProxyPort=1080 $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp $CLASSPATH $KAFKA_OPTS "$@"
Run Code Online (Sandbox Code Playgroud)

编辑: 事实证明,Kafka 使用 java.nio 库。它的套接字实现与代理不兼容。所以我用的jvm参数对Kafka客户端没有影响。

java proxy jvm socks apache-kafka

7
推荐指数
1
解决办法
1380
查看次数