重新思考,如何搭建一套简易高效的隧道代理

近期上线了基于http的隧道代理api业务,核心目标只有一个,就是用最简单的方式去灵活应对不同的代理使用场景。

有隧道代理需求可直接阅读使用文档,本文主要介绍为什么要推出这样一款基于api的隧道代理服务。

也欢迎大家关注iDataRiver平台 https://idatariver.com/zh-cn ,将会持续供应更多优质服务。

隧道代理的出现

先谈谈为什么会出现隧道代理这个东西,本质原因就是使用便捷,懒惰是生产力的巨大推力,而隧道代理则很好的满足了省时省力的特点。

传统的代理业务基本上都是提供一批ip:port列表,用户需要自己维护一个ip代理池,这个池子要做很多事情。

比如代理失效时需要监测到并剔除。需要自行控制代理的使用间隔,间隔太短容易被风控,间隔太久则利用率不足。需要定期监控代理池里的可用代理数量,如果太少了需要及时补充。以上功能都需要花费较多精力去维护使用,也就是说在业务还没开始使用的情况下要先花精力去维护一个代理池。

而且提取代理基本上是按条数收费的,但有些场景下条数与我们的使用量并不呈线性关系,因为提取出来的代理不管有没有用,都会进行扣费。

基于以上原因,如果有一个服务能直接满足上面的功能,且按使用量扣费,则会极大简化使用门槛,而隧道代理则刚好是做这件事的。

当前隧道代理现状

通过调研隧道代理的市场现状,我们总结了以下几点值得改进的地方。

起步价高

大多数都设置了预购门槛,对新用户不友好,因为几乎所有业务都需要在一开始使用较低成本去验证代理是否能满足业务需求。

限制使用时长

绝大多数服务商会限制流量包的有效期,一般是一个月,短的也有一星期,这种情况下对业务使用不规律的场景不友好,很可能购买的流量包还没用完就已经过期了,造成不必要的浪费。

代理类型参差不齐

常见的代理场景主要是数据中心代理,住宅代理和移动代理,而且每种代理都支持按照国家/城市定位进行筛选。目前市面上各供应商在这方面参差不齐。

依旧存在一定使用门槛

在使用不同代理类型或进行地区切换的时候,需要的文档繁琐,虽然比传统代理简洁,但依旧有上升空间。

我们的优化

当前常规的隧道代理使用HTTP(s)/SOCKS5协议进行调用,但是这种方式并不清晰,考虑到需要在调用的时候传入用户鉴权信息,代理类型,国家切换等各种参数,这些参数只能放在proxy url里拼接后发给服务端,随着控制场景的细化,proxy url会变得很不优雅。

考虑到使用隧道代理的绝大多数场景都是api的代理请求,因此直接将代理的使用内置在api请求里即可,这样使用代理就跟发起一个普通请求一样方便,至于控制代理场景的配置参数则可以很方便的在json payload里设置字段控制。

优化调用

下面以python的requests库对比两种使用

传统的代理使用如下

python 复制代码
import requests

proxies = {
    'http': 'http://userid-proxytype-1-proxycountry-us-***:password@api.idatariver.com',
    'https': 'http://userid-proxytype-1-proxycountry-us-***:password@api.idatariver.com',
}

res = requests.get('https://google.com', proxies=proxies)

优化后使用如下

python 复制代码
import requests

payload = {
    'apikey': 'idr_****',
    'proxy_type': '1',
    'proxy_sid': '',
    'proxy_country': 'us',
    'url': 'https://google.com',
    'method': 'GET',
}

res = requests.post('https://api.idatariver.com/proxy/request', json=payload)

可以看到所有的代理控制参数都在payload里清晰可见,而不是放在proxy url里进行字符串拼接,同时对于鉴权场景也非常简单,只需要传入apikey即可标识用户进行扣费。

可自定义是否切换ip

默认情况下每次请求都会随机更换ip。

在某些场景下,你需要在同一个会话中的多次请求中保持同一个ip,为了防止每次ip自动切换,你可以通过设置 proxy_sid 来保持ip不变。

如果不传 proxy_sid 或传入空字符串,则每次请求都会随机更换ip

考虑到ip代理的存活时间具有不稳定性,建议将会话时长控制在5分钟内,否则可能会失效。

支持范围广

可无缝接入全球两百多个国家。

优化计费方式

此外,我们在response headers里返回了自定义参数,告诉用户本次请求实际消费积分数量等,做到计费清晰明了。

通过优化计费方式,对于绝大多少场景来说,都按照调用次数扣费,所以并不需要提前购买流量包,因此没有预购门槛,同时也没有流量有效期,这对初始用户将会非常优化。

而对于单个请求流量较大的场景,我们会对超出部分的流量进行按流量计费,扣费明细将会返回在header里的x-idatariver-credits字段里。

简而言之,在一个http请求里,你可以灵活的使用我们所有的代理产品场景,而无需预购套餐包。

总结

通过对当前隧道代理市场的现状分析,我们结合用户最关心的使用体验进行了多处优化,通过一个简单的http请求便可访问我们所有的代理产品,而无需在后台做各种配置,感兴趣的可直接前往使用 https://idatariver.com

相关推荐
亿牛云爬虫专家17 小时前
深入探讨 Puppeteer 如何使用 X 和 Y 坐标实现鼠标移动
爬虫代理·puppeteer·鼠标·代理ip·小红书·16yun·用户行为
命里有定数1 天前
Ubuntu问题 -- 设置ubuntu的IP为静态IP (图形化界面设置) 小白友好
linux·tcp/ip·ubuntu·ip
独行soc2 天前
#渗透测试#SRC漏洞挖掘#红蓝攻防#地址池搭建之自动化编排ZMap输出结果
网络·python·安全·面试·自动化·代理ip·代理池
高耳机High-Earphone2 天前
IP数据包的分包与组包:网络通信的幕后英雄
网络协议·路由器·ip·ip协议·网络传输·分包组包·六度空间
亿牛云爬虫专家3 天前
捕捉页面的关键元素:用CSS选择器与Puppeteer自动抓取
css·爬虫·爬虫代理·puppeteer·代理ip·机票·特价
雪碧聊技术3 天前
Java网络编程1 - 介绍网络编程、网络编程三要素
网络·域名·协议·ip·网络通信·ipv4·ipv6
UestcXiye5 天前
《TCP/IP网络编程》学习笔记 | Chapter 12:I/O 复用
c++·网络协议·计算机网络·ip·tcp
xiaoxiongip6665 天前
ISP是什么?
网络·爬虫·网络协议·tcp/ip·ip·接口隔离原则
羽.6925 天前
计算机网络各层设备总结归纳(更新ing)
网络·笔记·网络协议·计算机网络·智能路由器·ip
蝌蚪HTTP7 天前
干货分享之Python爬虫与代理
爬虫·python·网络协议·tcp/ip·ip