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

bameofme發表於2024-03-07

近期上線了基於http的隧道代理api業務,核心目標只有一個,就是用最簡單的方式去靈活應對不同的代理使用場景。

有隧道代理需求可直接閱讀使用文件,本文主要介紹為什麼要推出這樣一款基於api的隧道代理服務。

也歡迎大家關注iDataRiver平臺 https://idatariver.com/zh-cn ,將會持續供應更多優質服務。

https://idatariver.com 隧道代理

隧道代理的出現

先談談為什麼會出現隧道代理這個東西,本質原因就是使用便捷,懶惰是生產力的巨大推力,而隧道代理則很好的滿足了省時省力的特點。

傳統的代理業務基本上都是提供一批ip:port列表,使用者需要自己維護一個ip代理池,這個池子要做很多事情。

比如代理失效時需要監測到並剔除。需要自行控制代理的使用間隔,間隔太短容易被風控,間隔太久則利用率不足。需要定期監控代理池裡的可用代理數量,如果太少了需要及時補充。以上功能都需要花費較多精力去維護使用,也就是說在業務還沒開始使用的情況下要先花精力去維護一個代理池。

而且提取代理基本上是按條數收費的,但有些場景下條數與我們的使用量並不呈線性關係,因為提取出來的代理不管有沒有用,都會進行扣費。

基於以上原因,如果有一個服務能直接滿足上面的功能,且按使用量扣費,則會極大簡化使用門檻,而隧道代理則剛好是做這件事的。

當前隧道代理現狀

透過調研隧道代理的市場現狀,我們總結了以下幾點值得改進的地方。

起步價高

大多數都設定了預購門檻,對新使用者不友好,因為幾乎所有業務都需要在一開始使用較低成本去驗證代理是否能滿足業務需求。

限制使用時長

絕大多數服務商會限制流量包的有效期,一般是一個月,短的也有一星期,這種情況下對業務使用不規律的場景不友好,很可能購買的流量包還沒用完就已經過期了,造成不必要的浪費。

代理型別參差不齊

常見的代理場景主要是資料中心代理,住宅代理和移動代理,而且每種代理都支援按照國家/城市定位進行篩選。目前市面上各供應商在這方面參差不齊。

依舊存在一定使用門檻

在使用不同代理型別或進行地區切換的時候,需要的文件繁瑣,雖然比傳統代理簡潔,但依舊有上升空間。

我們的最佳化

當前常規的隧道代理使用HTTP(s)/SOCKS5協議進行呼叫,但是這種方式並不清晰,考慮到需要在呼叫的時候傳入使用者鑑權資訊,代理型別,國家切換等各種引數,這些引數只能放在proxy url裡拼接後發給服務端,隨著控制場景的細化,proxy url會變得很不優雅。

考慮到使用隧道代理的絕大多數場景都是api的代理請求,因此直接將代理的使用內建在api請求裡即可,這樣使用代理就跟發起一個普通請求一樣方便,至於控制代理場景的配置引數則可以很方便的在json payload裡設定欄位控制。

最佳化呼叫

下面以python的requests庫對比兩種使用

傳統的代理使用如下

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)

最佳化後使用如下

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

相關文章