0
노드 js의 각 쿼리에 html 요청을 위해 프록시를 사용하고 싶습니다. 요청 모듈을 발견 했으므로 프록시를 사용하고 사용하기 쉽습니다.노드 js에서 프록시 풀을 사용하는 방법?
간단한 요청과 함께 잘 작동하지만 프록시 풀은 좋지 않습니다.
- 터널링 소켓을 설정할 수 없습니다, 원인은 = ECONNREFUSED
- 터널링 소켓 연결을 설정할 수 없습니다,에 statusCode (400)에게 이
- 터널링 소켓을 설정할 수 없습니다, 원인 = EHOSTUNREACH를 연결 = 그것은 나에게 오류가 발생합니다 0.0.13.64:80 - 로컬 (192.168.1.174:54491)
해결 방법은 무엇입니까?
var Promise = require('bluebird');
// Rounting
var koa = require('koa');
var router = require('koa-router')();
var koaRestMongoose = require('koa-rest-mongoose');
var cors = require('koa-cors');
var mongoUrl = '127.0.0.1:27017/db';
var mongoose = require('mongoose');
mongoose.connect(mongoUrl);
// PROXY
// This insert proxy list to the db/proxy
var proxy = require("./proxy")(mongoUrl, 'proxy');
var jsProxyPool = require('proxy-pool');
var mongoDbDataAccess = new jsProxyPool.MongoAccess(mongoUrl, 'proxy');
var poolConfig = new jsProxyPool.ProxyPoolConfiguration(mongoDbDataAccess, 20*1000);
var pool = new jsProxyPool.ProxyPool(poolConfig);
// Requesting
var request = require('request');
router.get('/url/:url', function*() {
var promise = new Promise((resolve, reject) => {
pool.getProxy((err, proxy) => {
var proxy = proxy;
var url = 'https://google.com/';
request({
url: url,
proxy: {
host: proxy._address,
port: proxy._port,
}
}, (error, response, body) => {
if (!error && response.statusCode == 200) {
resolve(body);
} else {
resolve('Proxy: '+proxy._address+':'+proxy._port + '\n' + error);
}
});
});
});
this.body = yield promise;
});
var app = koa();
app.use(cors());
app.use(router.routes());
app.listen(8005);