选择住宅代理
你已经运营了收藏堆.
在 WSA 应用记录的住宅路线和会议行为时,保持HTTP客户端,浏览器或爬虫器的控制.
您的客户端接受 HTTP,HTTPS或SOCKS5代理.
你想要的是轮换住宿IP或短暂的粘性会议.
需要在代理终端点上记录的国家选择.
适合买家
选择住宅代理
在 WSA 应用记录的住宅路线和会议行为时,保持HTTP客户端,浏览器或爬虫器的控制.
您的客户端接受 HTTP,HTTPS或SOCKS5代理.
你想要的是轮换住宿IP或短暂的粘性会议.
需要在代理终端点上记录的国家选择.
评估期间确认
确认每个源和预期使用均符合条件,然后为您的工作流设定保守的请求,重新尝试,保留和访问规则.
审查当前国家和账户可用性.
试验代表 targets和响应处理.
阅读服务协议.
考虑另一个路径
当你的团队不想拥有出发的HTTP客户端或浏览器连接时,请求/响应API是更清晰的适合.
连接控制
首先使用一个后接联网主机,然后选择验证,国家,会议行为和客户端所接受的输出格式.
使用随机国家对于任何可用的文档国家,或选择美国,GB,DE,FR,CA,AU和NL中的一个.
连接用户名和密码凭证,或使用白名单的IP及其记录的国家主机.
根据您的HTTP客户端,浏览器或爬虫器接受的输出生成Host:port,HTTP,HTTPS或SOCKS5.
存储凭据在服务器侧. 不要在浏览器代码,公共存储库,日志或截图中放置代理用户名,密码或生成的终点.
旋转和连续性
默认情况下,住宅访问可旋转. 要求不需要保持相同的住宅IP时, 省略会议和旋转选项.
对于独立请求,请省略会议控制,让终端点选择另一个住宅IP.
短暂的交换和紧的多步流动.
对于重复使用的会话身份证的平衡窗口.
记录的最大粘贴窗口是10分钟.
开发人员集成
生成一个代理终端点,将其存储为服务器侧秘密,并使用它在一个知情的HTTP客户端,浏览器或爬虫器中.
import os
import requests
proxy_url = os.environ["WSA_RESIDENTIAL_PROXY_URL"]
response = requests.get(
"https://example.com/public-page",
proxies={"http": proxy_url, "https": proxy_url},
timeout=30,
)
response.raise_for_status()
print(response.text)export WSA_RESIDENTIAL_PROXY_URL="<GENERATED_PROXY_URL>"
curl --proxy "$WSA_RESIDENTIAL_PROXY_URL" \
--request GET "https://example.com/public-page"import { ProxyAgent, fetch } from "undici";
const proxyUrl = process.env.WSA_RESIDENTIAL_PROXY_URL;
if (!proxyUrl) throw new Error("Missing WSA_RESIDENTIAL_PROXY_URL");
const response = await fetch("https://example.com/public-page", {
dispatcher: new ProxyAgent(proxyUrl),
});
if (!response.ok) throw new Error("Target returned " + response.status);
console.log(await response.text());<?php
$proxyUrl = getenv("WSA_RESIDENTIAL_PROXY_URL");
$client = curl_init("https://example.com/public-page");
curl_setopt_array($client, [
CURLOPT_PROXY => $proxyUrl,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$body = curl_exec($client);
if ($body === false) throw new RuntimeException(curl_error($client));
curl_close($client);
echo $body;package main
import (
"io"
"log"
"net/http"
"net/url"
"os"
"time"
)
func main() {
proxyURL, err := url.Parse(os.Getenv("WSA_RESIDENTIAL_PROXY_URL"))
if err != nil { log.Fatal(err) }
client := &http.Client{
Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)},
Timeout: 30 * time.Second,
}
response, err := client.Get("https://example.com/public-page")
if err != nil { log.Fatal(err) }
defer response.Body.Close()
body, err := io.ReadAll(response.Body)
if err != nil { log.Fatal(err) }
log.Print(string(body))
}import java.net.*;
import java.net.http.*;
import java.time.Duration;
public class ResidentialProxyExample {
public static void main(String[] args) throws Exception {
var address = new InetSocketAddress(
System.getenv("WSA_PROXY_HOST"),
Integer.parseInt(System.getenv("WSA_PROXY_PORT"))
);
var client = HttpClient.newBuilder()
.proxy(ProxySelector.of(address))
.authenticator(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
System.getenv("WSA_PROXY_USERNAME"),
System.getenv("WSA_PROXY_PASSWORD").toCharArray()
);
}
})
.connectTimeout(Duration.ofSeconds(30))
.build();
var request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com/public-page"))
.GET()
.build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}using System.Net;
var proxyUri = new Uri(
$"http://{Environment.GetEnvironmentVariable("WSA_PROXY_HOST")}:" +
$"{Environment.GetEnvironmentVariable("WSA_PROXY_PORT")}"
);
var proxy = new WebProxy(proxyUri) {
Credentials = new NetworkCredential(
Environment.GetEnvironmentVariable("WSA_PROXY_USERNAME"),
Environment.GetEnvironmentVariable("WSA_PROXY_PASSWORD")
)
};
using var client = new HttpClient(new HttpClientHandler { Proxy = proxy }) {
Timeout = TimeSpan.FromSeconds(30)
};
var body = await client.GetStringAsync(
"https://example.com/public-page"
);import { chromium } from "playwright";
const browser = await chromium.launch({
proxy: {
server: process.env.WSA_PROXY_SERVER,
username: process.env.WSA_PROXY_USERNAME,
password: process.env.WSA_PROXY_PASSWORD,
},
});
const page = await browser.newPage();
await page.goto("https://example.com/public-page");
console.log(await page.title());
await browser.close();使用生成的终端点,无论您的服务器端客户端接受代理配置.
运营所有权
代理终端改变出发路线;它不取代收集逻辑或下游数据质量.
WebScrapingAPI
WebScrapingAPI操作住宅代理终端点,网络选择以及配置的旋转或会议行为.
您的团队
您的团队运行HTTP客户端,浏览器,爬虫,请求政策,重试,解析,存储和下游质量规则.
选择
选择符合条件的公众号码 target并定义您的请求政策.
配置
通过身份验证,国家和会话行为生成终点.
请求
你的客户通过住宅代理终端发送请求.
运行
你的团队处理target的响应,重新试验,分析,存储和质量检查.
仅用于符合条件的公共网页,并审查源条款,适用的要求, 服务协议在生产使用前.
使用情况
代理选择
决定 | 住宅 | 数据中心 | 提供商 |
|---|---|---|---|
网络身份 | 实际住宅IP | 数据中心原产 IP | 与ISP相关的IP |
在这里记录 | 选国,身份验证,输出,旋转和粘贴窗口 | 确认可用的控制 | 确认可用的控制 |
连续性 | 按默认旋转;粘性为3,5,或10分钟 | 确认选择的报价 | 确认选择的报价 |
适合买家 | 你的团队拥有收藏器,需要住宿路由控制. | 评估target कब接受数据中心原始流量 | 评估工作流需要与ISP相关的路线 |
向水平,将三个代理类型进行比较.
价格指导
FAQ
住宅代理 通过真实住宅IP通过代理意识的HTTP客户端,浏览器或爬虫请求路由.您的应用程序仍然选择符合条件的公开网页并处理响应.
为了验证用户名和密码,请通过 pr.webscrapingapi.com:7777连接.
转换是默认的. 如果错过了会议和转换,每个请求可以从选择的国家或来自国家=随机的不同住宅IP.
粘贴式会议使用一个稳定的会议ID,轮换值为180,300或600秒,相当于3,5或10分钟.最多记录的粘贴式窗口为10分钟.
任何可用的文档位置使用 country=random. 显然文档的国家代码是US,GB,DE,FR,CA,AU和NL.
您可以在生成的终端点中使用用户名和密码进行认证,或者使用已记录的国家主机和端口的白色列表IP.
终端点生成器提供Host:port,HTTP,HTTPS和SOCKS5输出.