스터디/Etc

nodejs tor proxy

Dalmangyi 2024. 4. 17. 23:36

 

 

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

 

GitHub - pelogvc/tor-axios: use axios through tor network

use axios through tor network. Contribute to pelogvc/tor-axios development by creating an account on GitHub.

github.com

 

 

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만개가 안되니, 로직 구현할때 잘 생각해서 하길 바람.