socket.cork 尝试通过 socks 代理 (TOR) 发起请求时不是函数

socket.cork is not a function when trying to initiate request through socks proxy (TOR)

_http_outgoing.js:797
  socket.cork();
         ^

TypeError: socket.cork is not a function
    at ClientRequest._flushOutput (_http_outgoing.js:797:10)
    at ClientRequest._flush (_http_outgoing.js:776:16)
....

尝试使用之前使用 "proxysocket" 库创建的 SOCKS 代理程序 http.get() 或 request() 时出现上述错误。

我正在尝试创建工作代理以使用它 socket.io,或者 ws 或 http 以通过 SOCKS 代理建立连接。我尝试 "proxysocket" 库,它的代理给我上面的错误。

let agent = proxysocket.createAgent("127.0.0.1", 9050);
request("http://www.google.com", {agent: agent}, (err, res, body) => {
    if (err){
        console.log("Http request error: " + err);
    } else{
        console.log("Http request connection success!");
        console.log('statusCode:', response && response.statusCode);
        console.log(body)
    }
});

好的,这是解决方案。我尝试了很多代理,唯一有效的代理是 "socks5-http-client"。

其他代理在使用 SOCKS5 协议时出现各种错误。

const http = require("http");
const Agent = require("socks5-http-client/lib/Agent"); // Constructor 
let agent = new Agent({
        socksHost: 'localhost', // Defaults to 'localhost'.
        socksPort: 9050 // Defaults to 1080.
    });
    http.get({
              hostname: "www.google.com", // Can be also onion address if used behind TOR
              port: 80,
              agent: agent,
              method: 'GET'
          }, (res)=>{
               console.log("Connected");
               res.pipe(process.stdout);
               //Process res
           }).on('error', (err) => {
               console.error(`Got error: ${err.message}`);
           });

此类代理可以传递到使用 http.Agent 的任何类型的库中,例如 socket.io、ws 等