use axios with tor
npm install tor-axiosaxios through tor network
``bash`
npm install tor-axios axiosor
pnpm add tor-axios axios
`typescript
import { TorAxios } from "tor-axios";
const tor = new TorAxios({
ip: "localhost",
port: 9050,
controlPort: 9051,
controlPassword: "your_password",
});
const response = await tor.get("http://icanhazip.com");
console.log(response.data);
// Refresh Tor session to get a new IP
await tor.refreshSession();
`
`typescript
import { TorAxios } from "tor-axios";
const tor = new TorAxios(
// TorSetupOptions
{ port: 9050 },
// AxiosRequestConfig
{
baseURL: "https://api.example.com",
timeout: 5000,
}
);
const response = await tor.get("/users");
console.log(response.data);
`
`typescript
import axios from "axios";
import { TorAxios } from "tor-axios";
const tor = new TorAxios({ port: 9050 });
const instance = axios.create({
httpAgent: tor.httpAgent(),
httpsAgent: tor.httpsAgent(),
});
const response = await instance.get("http://icanhazip.com");
console.log(response.data);
`
On Debian you can install and run a relatively up to date Tor with.
`bash`
apt-get install tor # should auto run as daemon after install
On OSX you can install with homebrew
`bash`
brew install tor
tor & # run as background process
You need to enable the Tor ControlPort if you want to programmatically refresh the Tor session (i.e., get a new proxy IP address) without restarting your Tor client.
If you installed Tor via Homebrew, run the following to set up torrc:
`bashCopy sample config file
cp /opt/homebrew/etc/tor/torrc.sample /opt/homebrew/etc/tor/torrc
Then you can refresh your Tor session programmatically:
`typescript
import { TorAxios } from "tor-axios";const tor = new TorAxios({
ip: "localhost",
port: 9050,
controlPort: 9051,
controlPassword: "{YOUR_PASSWORD}",
});
let response = await tor.get("http://icanhazip.com");
console.log(response.data);
await tor.refreshSession();
response = await tor.get("http://icanhazip.com");
console.log(response.data);
`Test
`bash
pnpm test
``MIT