代理設定指南:如何連線住宅代理
本指南帶你從建立新的ProxyMay帳戶,到透過gate.proxymay.com:7000閘道送出第一個請求。了解使用者名稱的規則後,只要修改一個字串,就能切換國家、城市和固定工作階段。
01
建立帳戶並保存存取權杖
在註冊頁面建立帳戶,就會取得一組格式為pm_XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX的存取權杖。同一組權杖可用來登入網站,也可作為代理密碼。
伺服器只保存權杖的雜湊值和末4碼。離開頁面前,請把它保存在密碼管理工具或其他安全的地方。
遺失的權杖無法找回。在程式碼中請從環境變數讀取,避免它被放進程式碼儲存庫。
每個IP位址最多可建立3個帳戶,登入每10分鐘可嘗試10次。
02
儲值餘額並選擇產品
代理會從餘額扣款,所以請先儲值。一個餘額涵蓋動態住宅代理、靜態ISP代理、資料中心代理和行動代理。
動態住宅流量$0.80/GB起,行動流量$4.00/GB起,依使用量計費。例如在動態住宅花費$100,可取得的流量是$100除以$0.80/GB。儲值金額和加贈請見價格頁面。
03
組合代理使用者名稱:國家、城市和工作階段
使用者名稱以user開頭,再加上用-串接的選項。密碼永遠是你的存取權杖。不加任何選項時,會取得未指定國家的動態住宅IP。
| 選項 | 意義 | 範例 |
|---|---|---|
| type-mobile | 使用電信業者行動網路的IP | user-type-mobile-country-de(德國行動IP) |
| country-xx | 兩個字母的國家代碼 | user-country-jp |
| city-name | 小寫城市名稱,空格改成_ | user-country-us-city-new_york(紐約) |
| session-name | 英文字母和數字,最多16個;相同名稱維持同一IP | user-country-jp-session-shop1(日本,工作階段shop1) |
依照類型、國家、城市、工作階段的順序撰寫,可讀性較好。user-country-jp-city-tokyo-session-shop1代表以工作階段名稱shop1維持的東京IP。
行動代理只能指定國家,所以使用type-mobile時請不要加城市。國家代碼和城市清單請見支援地區頁面。
04
HTTP和SOCKS5連線格式,以及用curl檢查IP
HTTP和SOCKS5共用同一個主機gate.proxymay.com和連接埠7000。從以下三種格式中選擇你的工具支援的格式。
http://user-country-jp:[email protected]:7000
socks5://user-country-jp:[email protected]:7000
gate.proxymay.com:7000:user-country-jp:YOUR_TOKEN儀表板會產生相同的字串供你複製。前兩行是URL格式;最後一行適用於需要host:port:user:password格式的工具。
寫程式碼之前,先在終端機測試,可以快速縮小問題範圍。請確認回應中的ip、country和city與你的使用者名稱一致。
curl -x http://user-country-us:[email protected]:7000 https://ipinfo.io/json
# Same check over SOCKS5
curl -x socks5h://user-country-us:[email protected]:7000 https://ipinfo.io/json使用socks5h時,DNS查詢也會經過代理。
05
在Python requests和Scrapy中使用代理
在requests中,把相同的URL放在proxies字典的http和https下。這個範例以工作階段shop1維持日本IP。
import requests
proxy = "http://user-country-jp-session-shop1:[email protected]:7000"
proxies = {"http": proxy, "https": proxy}
r = requests.get("https://ipinfo.io/json", proxies=proxies, timeout=30)
print(r.status_code, r.json())使用SOCKS5時,請執行pip install requests[socks],並把協定改成socks5h://。
在Scrapy中,在請求的meta設定proxy,內建的中介軟體就會處理驗證。如果希望每個頁面使用不同的IP,請給每個請求各自的工作階段名稱。
import scrapy
class IpSpider(scrapy.Spider):
name = "ipcheck"
def start_requests(self):
proxy = "http://user-country-gb:[email protected]:7000"
yield scrapy.Request("https://ipinfo.io/json", meta={"proxy": proxy})
def parse(self, response):
yield response.json()06
Node.js代理範例
在Node.js 18以上版本,把undici的ProxyAgent作為fetch的dispatcher傳入。如果使用axios,請把相同的URL交給https-proxy-agent套件。
// npm install undici
import { ProxyAgent, fetch } from "undici";
const agent = new ProxyAgent("http://user-country-de:[email protected]:7000");
const res = await fetch("https://ipinfo.io/json", { dispatcher: agent });
console.log(await res.json());07
Playwright和Puppeteer的瀏覽器代理設定
瀏覽器自動化工具會分別接收伺服器和登入資訊。把位置選項放在使用者名稱,權杖放在密碼。
// Playwright
const { chromium } = require("playwright");
const browser = await chromium.launch({
proxy: {
server: "http://gate.proxymay.com:7000",
username: "user-country-fr-city-paris-session-web1",
password: "YOUR_TOKEN",
},
});
const page = await browser.newPage();
await page.goto("https://ipinfo.io/json");
// Puppeteer
const browser2 = await puppeteer.launch({ args: ["--proxy-server=http://gate.proxymay.com:7000"] });
const page2 = await browser2.newPage();
await page2.authenticate({ username: "user-country-fr", password: "YOUR_TOKEN" });需要保持登入的工作,請加上工作階段名稱,讓每個頁面都從同一IP開啟。
08
什麼時候該換IP,什麼時候該用固定工作階段?
沒有工作階段選項時,每次請求都會取得新的IP。這適合排名查詢或價格收集等彼此獨立的請求。
登入、購物車和多步驟流程在IP改變時可能會中斷。加上session-name,最長120分鐘維持同一IP。
- 為每個工作設定各自的工作階段名稱(例如cart1、cart2)。
- 要切換IP,只要更改工作階段名稱即可。
- 如果需要整個月使用同一IP,靜態ISP代理更合適。
09
排除代理連線錯誤
- 407 Proxy Authentication Required:使用者名稱格式或權杖錯誤。請確認是否以user開頭、選項是否用-分隔,以及權杖是否有多餘的空格。
- 連線被拒或逾時:重新確認主機gate.proxymay.com和連接埠7000,並確認防火牆沒有阻擋連到該連接埠的對外連線。也請確認還有餘額。
- 顯示的國家不對:確認國家代碼是兩個字母,城市為小寫並使用_。先執行curl檢查,再檢查程式碼中是否有快取或其他代理設定。
- 120分鐘後工作階段改變:這是正常的,因為固定工作階段最長維持120分鐘。請把工作切分到這個時間內,或用新的工作階段名稱重新開始。
更多解答整理在常見問題。
10
負責任地使用代理
請把ProxyMay用於公開資料收集、廣告驗證、SEO排名查詢、價格監控、網站與在地化測試,以及經營自有帳號。禁止未經授權存取他人帳號、垃圾訊息、詐騙、攻擊、違法內容,以及任何違反法律或侵害目標網站權利的行為。
控制請求節奏並遵守各網站的規則,也能讓你的工作順利進行。完整規則請見服務條款。