gpt4 book ai didi

node.js - 是否可以通过另一个 IP 向 Needle 模块发送请求?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:24:03 25 4
gpt4 key购买 nike

请求模块有参数localAddress。

 options = { 
url: "https://ru.tradeskinsfast.com/ajax/botsinventory",
method: "post",
headers: {
'accept': 'application/json, text/javascript, */*; q=0.01',
'accept-encoding' : 'gzip :deflate, br',
'accept-language': 'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4',
},
localAdress: someIp,
}
request(options, function(error, response, body){}

如何使用针头模块来完成?

最佳答案

Needle 仍然是 Node 的包装器 http.requestrequestneedle 不允许您专门传递 localAddress 或将任意选项传递给 http.request .

Needle 支持添加自定义 http.Agent对于请求和 agent.createConnection方法支持传递 localAddress 因为它使用 standard socket connect .

设置起来有点复杂,但可以覆盖默认行为。

const http = require('http')
const https = require('https')
const needle = require('needle')

class HttpAgentLocal extends http.Agent {

constructor(options){
super(options)
if (options && options.localAddress) this._localAddress = options.localAddress
}

createConnection(options, callback){
if (this._localAddress) options.localAddress = this._localAddress
return super.createConnection(options, callback)
}
}

class HttpsAgentLocal extends https.Agent {

constructor(options){
this._localAddress = options.localAddress
}

createConnection(options, callback){
options.localAddress = this._localAddress
return super.createConnection(options, callback)
}
}


let server = http.createServer((req, res) => {
console.log('request: %s - %s', req.method,req.url, req.connection.remoteAddress)
res.end('hello\n')
})

server.listen(3121, async ()=> {
console.log('listening')
const agent = new HttpAgentLocal({ localAddress: '10.8.8.8' })
let res = await needle('get','http://localhost:3121/', null, { agent: agent })
console.log(res.body.toString())
server.close()
})

关于node.js - 是否可以通过另一个 IP 向 Needle 模块发送请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47255262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com