nodejs tor proxy
1. tor 브라우저까지 깔 필욘 없지만 테스트를 위해서 깔아도 좋음.
2. "$brew install tor" 명령어로 tor 설치
3. 터미널에서 "$tor" 명령어 실행해서 tor 실행하기.
또는 서비스로 실행도 가능 "$brew services start tor"
4. "$sudo lsof -i :9050" 명령어로 가동중인지 확인
프로세스 죽일려면 PID를 이용해서 "$sudo kill -9 ${PID}" 하면됨.
(이런식임 "$sudo kill -9 14223")
5. npm 패키지 설치
$npm i axios
$npm i socks-proxy-agent
6. import
import axios from 'axios';
import { SocksProxyAgent } from 'socks-proxy-agent';
7. nodejs 코드
const httpsAgent = new SocksProxyAgent('socks://127.0.0.1:9050');
const result = await axios({
httpsAgent,
method:'get',
url:`https://test.com`
})
----------------------------------------------------------------------------------------------------
아래는 추가글.
node에서 tor를 컨트롤하려면 아래 작업이 필요함.
controlPort와 controlPassword를 이용하면 torSetup을 이용해서 컨트롤 할 수 있음.
그리고 매번 필요할때마다 세션을 새로 생성하면 ip주소가 바뀌게 됨.
https://github.com/pelogvc/tor-axios
npm i tor-axios 설치.
홈브류로 tor 설치했으니 아래 명령어 입력해서 giraffe에 대한 해쉬-패스워드 만들기
$tor --hash-password giraffe
const tor_axios = require('tor-axios');
const tor = tor_axios.torSetup({
ip: 'localhost',
port: 9050,
controlPort: '9051',
controlPassword: 'giraffe',
})
let response = await tor.get('http://api.ipify.org');
let ip = response.data;
console.log(ip);
await tor.torNewSession(); //change tor ip
response = await tor.get('http://api.ipify.org');
ip = response.data;
console.log(ip);
그리고 이렇게 호출하면 ip주소 확인해보고
토르 세션 바꿔서
다시 ip 주소 확인해 볼 수 있음.
torNewSession 작업은 오래 걸리고
전세계에 있는 tor용 프록시 ip주소가 1만개가 안되니, 로직 구현할때 잘 생각해서 하길 바람.