获取专属代理方案
Request-based Rotating Proxy

爬虫采集专用代理IP

每完成一次请求即自动分配新IP,套餐按最大线程并发量划分,不限流量使用。适合合规的公开数据采集与自动化程序接入。

每请求自动轮换 不限流量 100–5000线程并发
public-data.example
浏览公开页面 自动采集数据
套餐规格

按最大线程并发选择套餐

一个 TCP 连接计为一个线程并发。浏览器加载单个页面时可能同时消耗 20–30 个线程,请根据工具工作方式与峰值请求量预留空间。

线程并发 100

¥1800 /月
  • 最大线程并发量100
  • 不限流量,带宽:50Mbits
  • 端口数量:20个
  • IP池数量:300万+
  • 全球IP随机混播
  • 每请求一次自动更换一次IP
  • 支持协议:socks5/http(S)
  • 获取方式:账密认证
咨询购买

线程并发 500

¥5000 /月
  • 最大线程并发量500
  • 不限流量,带宽:250Mbits
  • 端口数量:50个
  • IP池数量:300万+
  • 全球IP随机混播
  • 每请求一次自动更换一次IP
  • 支持协议:socks5/http(S)
  • 获取方式:账密认证
咨询购买

线程并发 1000

¥8000 /月
  • 最大线程并发量1000
  • 不限流量,带宽:500Mbits
  • 端口数量:50个
  • IP池数量:300万+
  • 全球IP随机混播
  • 每请求一次自动更换一次IP
  • 支持协议:socks5/http(S)
  • 获取方式:账密认证
咨询购买

线程并发 2000

¥15000 /月
  • 最大线程并发量2000
  • 不限流量,带宽:1000Mbits
  • 端口数量:50个
  • IP池数量:300万+
  • 全球IP随机混播
  • 每请求一次自动更换一次IP
  • 支持协议:socks5/http(S)
  • 获取方式:账密认证
咨询购买

线程并发 5000

¥30000 /月
  • 最大线程并发量5000
  • 不限流量,带宽:2000Mbits
  • 端口数量:50个
  • IP池数量:300万+
  • 全球IP随机混播
  • 每请求一次自动更换一次IP
  • 支持协议:socks5/http(S)
  • 获取方式:账密认证
咨询购买

并发提示: 线程并发不是软件实例数量。浏览器、自动化框架与网页资源请求可能同时创建多个 TCP 连接,建议测试后选择套餐。

快速接入

常用开发语言请求示例

将示例中的服务器、端口、账号和密码替换为您订单中的连接信息。生产环境请通过安全配置保存凭证,不要直接写入公开代码。


			  #!/usr/bin/env python3
				import requests
				username = "YOURUSERNAME"
				password = "YOURPASSWORD"
				PROXY_DNS = "proxy.astoip.com:7011"
				urlToGet = "http://ip-api.com/json"
				proxy = {"http":"http://{}:{}@{}".format(username, password, PROXY_DNS)}
				r = requests.get(urlToGet , proxies=proxy)
				print("Response:\n{}".format(r.text))
			  
<?php
        $username = 'YOURUSERNAME';
				$password = 'YOURPASSWORD';
				$PROXY_ASTO_PORT = 7011;
				$PROXY_ASTO_DNS = 'proxy.astoip.com';
				$urlToGet = 'http://ip-api.com/json';
				$ch = curl_init();
				curl_setopt($ch, CURLOPT_URL, $urlToGet);
				curl_setopt($ch, CURLOPT_HEADER, 0);
				curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
				curl_setopt($ch, CURLOPT_PROXYPORT, $PROXY_ASTO_PORT);
				curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP');
				curl_setopt($ch, CURLOPT_PROXY, $PROXY_ASTO_DNS);
				curl_setopt($ch, CURLOPT_PROXYUSERPWD, $username.':'.$password);
				$data = curl_exec($ch);
				curl_close($ch);
				echo $data;
		?>
			  
			  

			var request = require('request');

				var username = 'YOURUSERNAME';
				var password = 'YOURPASSWORD';
				var PROXY_ASTO_DNS = 'proxy.astoip.com';
				var PROXYASTO_PORT = 7011;

				var proxyUrl = "http://" + username + ":" + password + "@" + PROXY_ASTO_DNS + ":" + PROXYASTO_PORT;
				var proxiedRequest = request.defaults({'proxy': proxyUrl});

				proxiedRequest.get("http://ipinfo.io", function (err, resp, body) {
					console.log('error = ', err);
					console.log('body = ', body);
				})
			  

		import java.io.BufferedReader;
		import java.io.IOException;
		import java.io.InputStreamReader;
		import java.net.*;

		public class Application {
		private static String USERNAME = "YOURUSERNAME";
		private static String PASSWORD = "YOURPASSWORD";
		private static String PROXY_ASTO_DNS = "proxy.astoip.com";
		private static int PROXYASTO_PORT = 7011;
		private static String URL_TO_GET = "http://ipinfo.io";
		public static void main(String[] args) throws IOException {
        final Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(PROXY_ASTO_DNS, PROXYASTO_PORT));
        Authenticator.setDefault(
                new Authenticator() {
                    public PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(
                                USERNAME, PASSWORD.toCharArray()
                        );
                    }
                }
        );
        final URL url = new URL(URL_TO_GET);
        final URLConnection urlConnection = url.openConnection(proxy);
        final BufferedReader bufferedReader = new BufferedReader(
                new InputStreamReader(urlConnection.getInputStream()));
        final StringBuilder response = new StringBuilder();
        String inputLine;
        while ((inputLine = bufferedReader.readLine()) != null) {
            response.append(inputLine);
        }
        bufferedReader.close();
        System.out.println(String.format("Response:\n%s", response.toString()));
    }
}
			  

			package main
			import (
				"fmt"
				"io/ioutil"
				"net/http"
				"net/url"
				"os"
			)

			const(
				proxyUrlTemplate = "http://%s:%s@%s:%s"
			)

			const (
				username = "YOURUSERNAME"
				password = "YOURPASSWORD"

				PROXY_ASTOIP_DNS = "proxy.astoip.com"
				PROXYASTOIP_PORT = "9001"

				urlToGet = "http://ipinfo.io"
			)

			func main() {
				proxy := fmt.Sprintf(proxyUrlTemplate, username, password, PROXY_ASTOIP_DNS, PROXYASTOIP_PORT)
				proxyURL, err := url.Parse(proxy)
				if err != nil {
					fmt.Printf("failed to form proxy URL: %v", err)
					os.Exit(1)
				}

				u, err := url.Parse(urlToGet)
				if err != nil {
					fmt.Printf("failed to form GET request URL: %v", err)
					os.Exit(1)
				}

				transport := &http.Transport{Proxy: http.ProxyURL(proxyURL)}
				client := &http.Client{Transport: transport}

				request, err := http.NewRequest("GET", u.String(), nil)
				if err != nil {
					fmt.Printf("failed to form GET request: %v", err)
					os.Exit(1)
				}

				response, err := client.Do(request)
				if err != nil {
					fmt.Printf("failed to perform GET request: %v", err)
					os.Exit(1)
				}

				responseBodyBytes, err := ioutil.ReadAll(response.Body)
				if err != nil {
					fmt.Printf("could not read response body bytes: %v", err)
					os.Exit(1)
				}
				fmt.Printf("Response:\n%s\n", string(responseBodyBytes))
			}
			  
核心价值

减少流量成本,简化轮换逻辑

将 IP 轮换放在云端完成,程序只需持续通过同一代理入口发送请求。

不限流量

套餐按线程并发规格划分,即使项目流量较大,也不再按 GB 单独计费。

每请求自动换 IP

每次请求完成后自动分配新住宅 IP,减少程序端维护 IP 池与切换逻辑。

容易集成

账密认证与标准代理协议可接入 Python、PHP、Java、Node.js 等开发环境。

适用场景

为合规公开数据项目提供网络能力

请遵守目标网站服务条款、robots 规则、隐私要求和适用法律。

公开网页采集

用于抓取公开且允许访问的数据,并控制合理的请求速率。

搜索结果研究

按公开结果分析地区差异与关键词表现。

旅游信息整合

聚合公开航旅价格、库存或趋势信息。

品牌保护

监测公开页面上的侵权、仿冒和品牌使用情况。

广告验证

检查不同地区的公开广告展示内容和落地页。

数据更新

定期更新公开数据集,减少固定网络出口带来的限制。

需要评估项目的线程并发量?

告诉我们您使用的采集工具、实例数量与峰值请求方式,我们会协助您估算更合理的并发套餐。