Собственно надо парсить сложный сайт. Поэтому решил использовать headless браузер. Phantom.js. Собственно управлять всем этим надо из Node.js, поэтому тут еще и Casper.js + Spooky.js
Но парсить надо с разных сетевых интерфейсов (tunX - OpenVPN)
Когда был просто request, там был параметр localAddress, в котором прописывался ip адрес интерфейса и всё.
Но как заставить ходить не напрямую Phantom.js? Ну или Firefox через Slimer.js (Casper.js и его поддерживает)
Собственно вот пример с сайта. Работает. Но как тут указать сетевой интерфейс?
var Spooky = require('spooky');
var spooky = new Spooky({
child: {
transport: 'http'
},
casper: {
logLevel: 'debug',
verbose: true
}
}, function (err) {
if (err) {
e = new Error('Failed to initialize SpookyJS');
e.details = err;
throw e;
}
spooky.start(
'http://en.wikipedia.org/wiki/Spooky_the_Tuff_Little_Ghost');
spooky.then(function () {
this.emit('hello', 'Hello, from ' + this.evaluate(function () {
return document.title;
}));
});
spooky.run();
});
spooky.on('error', function (e, stack) {
console.error(e);
if (stack) {
console.log(stack);
}
});
/*
// Uncomment this block to see all of the things Casper has to say.
// There are a lot.
// He has opinions.
spooky.on('console', function (line) {
console.log(line);
});
*/
spooky.on('hello', function (greeting) {
console.log(greeting);
});
spooky.on('log', function (log) {
if (log.space === 'remote') {
console.log(log.message.replace(/ \- .*/, ''));
}
});