#sock #hyper #v5 #async #connector #future #11

hyper-socks-async

支持 TLS 的 Socks V5 连接器,用于异步 hyper (>= 0.11)

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2018年1月10日

#19 in #11

MIT 许可证

9KB
122 代码行数(不含注释)

hyper-socks-async

目前仅实现了支持 IPv4 的 socks V5 客户端,但与当前异步 hyper 兼容。

不支持身份验证或 IPv6。如果您需要,请提交一个 issue。

MIT licensed

安装

# Cargo.toml
[dependencies]
hyper-socks-async = "0.1.0"

使用

只需使用 hyper::Client 配置 Socksv5Connector。如果 URL 方案是 https,连接器将使用 native-tls。

以下示例假设您正在 127.0.0.1:9150 上运行与 socks v5 兼容的服务器。您也可以在克隆项目后使用 cargo run --example client 运行此示例。

extern crate futures;
extern crate hyper;
extern crate hyper_socks_async;
extern crate tokio_core;

use futures::Future;
use futures::stream::Stream;
use hyper::Client;
use hyper_socks_async::Socksv5Connector;
use std::net::{SocketAddrV4, SocketAddr, Ipv4Addr};

fn main() {
    let mut core = tokio_core::reactor::Core::new().unwrap();
    
    // Proxy running on 127.0.0.1:9150
    let proxy_addr = SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 9150));
    let client = Client::configure()
        .connector(Socksv5Connector::new(&core.handle(), proxy_addr))
        .build(&core.handle());

    // http://example.com or http://1.2.3.4 work as well
    let url = "https://ifconfig.co/json".parse::<hyper::Uri>().unwrap();
    let response_body = client.get(url)
        .and_then(|res| res.body().concat2());
    let bytes = core.run(response_body).expect("Request failed").to_vec();
    println!("Got: {}", String::from_utf8_lossy(&bytes));
}

依赖项

~8–16MB
~196K SLoC