DocsGetting started
Make your first request
Send a request through your Pine IP with cURL, Python, Node.js or Go, and check that it leaves from your static IP.
What you need
Every Pine IP comes with four details: a host, a port, a username and a password. One username and password works for every IP and every protocol on your account.
Most tools take those details as a single proxy URL:
http://USERNAME:PASSWORD@HOST:PORT
Swap the four placeholders for the values in your proxy list. The examples below send one request to api.ipify.org, which replies with the IP address it sees.
Send a request
Pick your language. Each example prints the IP address the site sees.
curl -x http://USERNAME:PASSWORD@HOST:PORT "https://api.ipify.org?format=json"
import requests
proxy = "http://USERNAME:PASSWORD@HOST:PORT"
response = requests.get(
"https://api.ipify.org?format=json",
proxies={"http": proxy, "https": proxy},
timeout=20,
)
print(response.json()) # {"ip": "<your Pine IP>"}
// Node's built-in fetch ignores proxy settings, so pass an agent from undici.
import { ProxyAgent, fetch } from "undici";
const dispatcher = new ProxyAgent("http://USERNAME:PASSWORD@HOST:PORT");
const response = await fetch("https://api.ipify.org?format=json", { dispatcher });
console.log(await response.json());
package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
proxy, _ := url.Parse("http://USERNAME:PASSWORD@HOST:PORT")
client := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxy)}}
response, err := client.Get("https://api.ipify.org?format=json")
if err != nil {
panic(err)
}
defer response.Body.Close()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}
For Python, Python requests covers sessions, retries and SOCKS5.
Check the result
The reply should show your Pine IP, not your own. Send the request again tomorrow and you’ll see the same address, because Pine IPs never rotate.
If you see your own IP, or an error:
- Compare the host and port with your proxy list.
- Check the username and password. If the password contains symbols such as
@,:or/, URL-encode them. - Keep
http://at the start of the proxy URL, even when the site you’re visiting useshttps://. Your client opens an encrypted tunnel through the proxy, so the site’s traffic stays encrypted end to end.
Connection errors covers each error in more detail.
Use SOCKS5 instead
The same username and password work over SOCKS5. Use the socks5h:// scheme so the proxy looks up the site’s address, rather than your own network:
curl -x socks5h://USERNAME:PASSWORD@HOST:PORT "https://api.ipify.org?format=json"
SOCKS5 also carries UDP, plus apps that don’t speak HTTP, such as SSH, database and game clients.
Next steps
- Pick a TCP/IP fingerprint that matches the device your traffic claims to be.
- Set up Scrapy or Puppeteer and Playwright.
- Learn how to keep blocked requests to a minimum.