首页 > 其他分享 >重新思考,如何搭建一套简易高效的隧道代理

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

时间:2024-03-07 11:35:00浏览次数:37  
标签:高效 场景 隧道 ip 代理 简易 proxy 使用 搭建

近期上线了基于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-***:[email protected]',
    'https': 'http://userid-proxytype-1-proxycountry-us-***:[email protected]',
}

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

标签:高效,场景,隧道,ip,代理,简易,proxy,使用,搭建
From: https://www.cnblogs.com/bameofme/p/18054856

相关文章

  • 企业如何实现跨部门和员工之间的高效沟通协同?
    在当今高度竞争和信息化的商业环境中,企业内部各部门和员工之间的沟通协同效率直接影响到企业的整体运营效果。那么,企业如何实现各部门和员工之间的高效沟通协同呢?  一、建立有效沟通机制与明确部门职责 要实现各部门和员工间的高效协同,需构建明确、完善的沟通机制,包括设......
  • ubuntu搭建swift开发环境
    ubuntu搭建swift开发环境安装homebrew:https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/通过homebrew安装swift安装homebrew新建setup_homebrew_env.sh​#!/bin/bashexportHOMEBREW_INSTALL_FROM_API=1exportHOMEBREW_API_DOMAIN="https://mirrors.tuna.tsinghua.......
  • 从零开始搭建Springboot开发环境(Java8+Git+Maven+MySQL+Idea)之一步到位
    说明所谓万事开头难,对于初学Java和Springboot框架的小伙伴往往会花不少时间在开发环境搭建上面。究其原因其实还是不熟悉,作为在IT界摸爬滚打数年的老司机,对于各种开发环境搭建已经了然于胸,自己当年也是这么过来的。今天我就毕其功于一役,解放大家的时间,让凡人的环境配置见鬼去吧......
  • WEBRTC 局域网 自己搭建信令服务 实现视频通讯
    信令服务constapp=require('express')();constwsInstance=require('express-ws')(app);app.ws('/',ws=>{ ws.on('message',data=>{ wsInstance.getWss().clients.forEach(server=>{ if(server!==ws)......
  • 本地快速搭建airflow docker镜像,映射本地路径
    airflow官方文档拉取镜像dockerpullapache/airflow:2.8.2拉取配置文件curl-LfO'https://airflow.apache.org/docs/apache-airflow/2.8.2/docker-compose.yaml'修改刚刚拉取的yaml文件关闭示例dagAIRFLOW__CORE__LOAD_EXAMPLES:'false'映射本地路径volumes:......
  • qgis 3.30 python开发环境搭建
     1.使用mamba加速conda下载qgiscondainstall-cconda-forge-nbasemamba2.创建qgis虚拟环境condacreate-nqgispython=3.11condaactivateqgis(管理员CMD)mambainstall-cconda-forgeqgis=3.30.0mambainstall-cconda-forgerasteriomambainstall-cco......
  • Jmeter+Influxdb+Grafana搭建
    背景在无界面压测情况下,我们需要去额外搭建可视化观测平台。借助于Influxdb+Grafana,我们可以轻松让Jmeter的结果自动写入Influxdb,Influxdb实时存储运行结果,最后由Grafana作为展示Jmeter无界面运行需要修改配置(jmeter.properties)jmeter.save.saveservice.response_data=truej......
  • win11搭建nginx+php环境
    win11搭建nginx+php环境nginx配置nginx-1.24.0/nginx.conf#passthePHPscriptstoFastCGIserverlisteningon127.0.0.1:9000#location~\.php${roothtml;fastcgi_pass127.0.0.1:9000;fastcg......
  • 如何简洁高效的搭建一个SpringCloud2023的maven工程
    前言依赖管理有gradle和maven,在这里选择比较常用和方便的Maven作为工程项目和依赖管理工具来搭建SpringCloud实战工程。主要用到的maven管理方式是多模块和bom依赖管理。什么是maven的多模块依赖管理Maven多模块项目相对于单模块项目而言,依赖是不共享的,但父模块提供了全局共享......
  • GFP-GAN环境搭建&推理测试
    引子近期,文生图,wav2lip很火,文生图,见识的太多,不多说了。wav2lip其通过语音驱动唇部动作并对视频质量进行修复,里面一般涉及到三个步骤,文本到语音转化,语音驱动唇部动作,图像质量修复。最后一步骤涉及到图像质量修复,考虑到之前做过基于GFP-GAN相关的工作,在此,总结汇总下。本文主要介绍......