我们提供了多种编程语言的SDK供开发者参考,SDK主要包含: 1.集成各个代理产品的API调用,目前支持Java、PHP、Python、Go; 2.调用各个接口API的代码样例、注意事项; 3.请求代理服务器的代码样例; 4.请求隧道的代码样例。 SDK下载: - [Java >](https://gitee.com/qgnet/java-proxy-sdk "Java") - [PHP >](https://gitee.com/qgnet/php-proxy-sdk "PHP") - [Python >](https://gitee.com/qgnet/python-proxy-sdk "Python") - [Go >](https://gitee.com/qgnet/go-proxy-sdk "Go") Java、PHP、Python、Go的SDK集成了各个接口的API调用,方便您简单快速地调用API接口,其他语言后续也会陆续支持,敬请期待~
## 1. 接口描述
接口请求域名: exclusive.proxy.qg.net。
本接口 (/get) 用于独享代理产品提取IP资源的接口。
默认接口请求频率限制:(通道数*5+10)次/分钟。
推荐使用调试工具进行调试,[调试工具](https://www.qg.net/tools/IPdebug.html)。
## 2. 输入参数
| 参数名称 | 必选 | 类型 | 描述 |
| ---------- | ---- | ------- | ------------------------------------------------------------ |
| key | 是 | String | 公共参数,产品唯一标识。 |
| area | 否 | String | 按地区提取。 |
| isp | 否 | Integer | 按运营商提取。
0: 不筛选
1: 电信
2: 移动
3: 联通 |
| keep_alive | 否 | Integer | 资源存活时长,单位分钟。 |
| num | 否 | Integer | 提取个数,默认为1。 |
| distinct | 否 | Bool | 去重提取,默认为false。如果为true则不会提取到已经在使用的IP资源。 |
## 3. 输出参数
| 参数名称 | 类型 | 描述 |
| ------------ | ----------------------------------------------- | ------------------------------------------------------------ |
| code | String | 请求状态码。 |
| data.task_id | String | 提取批次的ID。 |
| data.ips | Array of [IP](https://www.qg.net/doc/1839.html) | IP资源列表。
**注:IP结构中的server才是代理地址,proxy_ip是代理的真实出口IP。** |
| data.num | Integer | 提取到的IP资源数量。 |
| request_id | String | 唯一请求ID,每次请求都会返回。定位问题时需要提供该次请求的 request_id。 |
## 4. 示例
#### 输入示例
```
GET https://exclusive.proxy.qg.net/get?key=<您的key信息>&<其他输入参数>
```
#### 输出示例
```json
{
"code": "SUCCESS",
"data": {
"task_id": "0LIKQ3S1_task",
"ips": [
{
"proxy_ip": "123.54.55.24",
"server": "123.54.55.24:59419",
"area": "河南省商丘市",
"isp": "电信",
"deadline": "2023-02-25 15:38:36"
}
],
"num": 1
},
"request_id": "83158ebe-be6c-40f7-a158-688741083edc"
}
```
## 5. 错误码
| 错误码 | 描述 |
| ---------------------- | ------------------------------------------------------------ |
| INTERNAL_ERROR | 系统内部异常。 |
| INVALID_PARAMETER | 参数错误(包含参数格式、类型等错误)。 |
| INVALID_KEY | Key不存在或已过期。 |
| UNAVAILABLE_KEY | Key不可用,已过期或被封禁 |
| ACCESS_DENY | Key没有此接口的权限。 |
| API_AUTH_DENY | Api授权不通过,请检查[Api鉴权配置](https://www.qg.net/user/proxyIpManage)。 |
| KEY_BLOCK | Key被封禁。 |
| REQUEST_LIMIT_EXCEEDED | 请求频率超出限制。 |
| NO_RESOURCE_FOUND | 资源不足。 |
| FAILED_OPERATION | 提取失败。 |
本文将针对谷歌浏览器如何使用代理IP进行详细说明,具体步骤如下: ## 1 代理IP信息查看 查看自己所购买的相对应的代理IP面板,点击【代理IP】-【查看详情】查看AuthKey以及AuthPwd信息; ![image-20221115090533126](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2022-11-15/0905341fc1027.png) ## 2 代理IP资源提取 在【控制台】-【代理IP】-中的【提取工具】或【调试工具】又或者点击代理IP管理面板中的【提取IP】进行提取IP资源; ![image-20221115090403727](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2022-11-15/09040606f6714.png) 下图为【调试工具】-【提取IP】,【接口类型选择】-【提取IP资源】,填写所购买的代理IP的KEY,点击【测试】,在右方即会显示所提取的IP资源; ![image-20221115090222008](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2022-11-15/0902242b9c707.png) ## 3 在Google浏览器中设置代理ip 在Google浏览器左上角点击【菜单】-【设置】; ![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2022-11-15/090652518f654.jpg) 设置下拉-显示【高级设置】; ![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2022-11-15/090645186e90b.jpg) 选择【网络】,点击【更改代理服务器设置】,选择【Internet属性】中的【连接局域网设置】; ![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2022-11-15/090639ce7f898.jpg) 在【局域网设置中】选择【代理服务器】,填写您所购买的代理IP所对应提取的IP资源,点击【确认】; ![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2022-11-15/09063503e588b.jpg) ## 4 身份验证 打开一个新网页,弹出此会话时,填写您购买代理IP业务所对应的AuthKey以及AuthPwd信息,并确认; ![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2022-11-15/090630cebfacc.jpg) ## 5 验证是否配置成功 身份验证成功后,可直接在百度上进行查看IP是否为所提取的IP资源信息,现查看该IP为咱们所提取的IP资源,表示代理IP在Google浏览器中配置成功。 ![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2022-11-15/090623482b8eb.jpg)
欢迎您使用青果网络服务!
本协议是青果网络与您,就您使用青果网络服务的相关事项签订的合同。为使用青果网络服务,您应当充分阅读、理解本协议,其中限制、免责条款或者其他涉及您重大权益的条款(如违约处罚、争议管辖等)可能会以加粗、加下划线等形式提示您重点注意。
除非您已充分阅读、理解并同意接受和遵守本协议,否则,请您不要使用青果网络服务。您通过网页确认或以其他任何方式明示或者默示表示接受本协议,或您以任何方式使用青果网络服务的,即视为您已阅读并同意接受本协议的约束,本协议即在您与青果网络之间产生法律效力。
使用青果网络服务应当遵守本协议及其服务条款。服务条款以青果网络官网或其他相关页面展示的内容为准,您应事先了解服务条款,并根据服务条款进行操作,以确保顺利使用。
1.1 青果网络服务指青果网络提供的云计算或相关的各种产品、服务(具体以青果网络实际提供的为准),您可以根据自己的需求选择使用一项或多项具体服务并遵守其服务条款。
1.2 涉及具体服务的服务内容、服务等级、技术规范、操作文档、计费标准等内容的服务条款、规则、说明、标准等(统称为“服务条款”),以青果网络官网或其他相关页面展示的内容为准。
1.3 青果网络是中立的技术服务提供者,依约向您提供各类技术产品和服务;您的网站、应用、软件、平台等任何产品、服务及相关内容等,由您自行运营并承担全部责任。
1.4 双方均保证已经依照国家相关规定获得了合法经营资质或政府审批等,有权依法运营其产品及服务。双方进一步保证,在本协议有效期内持续保持具备国家相关规定要求的经营资质或审批手续。
2.1 您应依法具备必要、适当的权利能力和行为能力,按照青果网络的要求完成注册、获得青果网络服务账号(以下简称“账号”)。
2.2 为保护账号的安全性和独立性,避免出现账号归属不清晰等不良后果,您应当使用您享有合法权益的手机号、邮箱、QQ等进行注册或登录,否则,可能导致您无法正常登录和使用青果网络服务。
2.3 您应当按照青果网络的流程填写、提交真实、合法、有效的资料(统称“客户资料”),包括但不限于姓名、身份证号、手机号、电子邮箱、工商登记证件等;如果客户资料发生变更的,您应及时书面通知青果网络或根据青果网络的规则自行进行更新。如您提供的客户资料是虚假、非法、无效的,或者青果网络依独立判断怀疑您的客户资料虚假、非法、无效的且无法根据您的任何一项客户资料与您本人取得联系,青果网络有权限制、封禁您的账号,及暂停或终止提供服务的部分或全部功能。在此情况下,您需自行承担因此引起的相应责任及后果。
2.4 本协议效力适用于您名下全部账号。账号将作为您使用青果网络服务的身份识别依据,您应当对会员名、密码等信息采取必要、有效的保密和安全保护措施(包括但不限于:保管使用权限、设置高强度密码和定期更换措施等),否则,导致的后果由您自行承担。此外,您应为账号下的行为负责,所有账号下的操作行为均被视为您实施,且应由您承担全部法律后果。
2.5 您需自行建立健全内部管理制度,规范对账号的使用与管理。为保障您的权益,账号应仅供您自行使用,若您基于自身经营需要等原因,将账号授权您的员工或他人管理的,须做好权限管控,并且在遇到人员变动时及时完成交接和账号安全保护(例如修改密码、变更登录方式、设置账号保护等)。
2.6 为保护账号和业务等的安全,您应依照国家相关规定及青果网络的流程、制度进行实名认证。您同意授权青果网络通过第三方核实您提交的相关信息或资料。
2.7 实名认证是对账号归属以及责任承担等进行判断的依据,在发生账号归属争议等纠纷时,青果网络有权认定该账号归属于实名认证主体;对于归属存在争议的账号,青果网络有权暂时对该账号进行冻结。您在进行认证时务必谨慎对待,给与足够的重视并确保认证主体与账号使用主体保持一致,避免将企业使用的账号认证在个人名下,或将本人使用的账号认证在他人名下等任何不当认证行为。
2.8 若您发现有他人盗用您的账号及密码、或任何其他未经您合法授权的情形时,您应立即以有效方式通知青果网络并提供必要资料(如客户资料、情况说明、证明材料及诉求等,以便青果网络核实身份及事件)。青果网络收到您的有效通知并核实身份后,会依据法律法规及服务条款进行处理。青果网络依据本条进行处理产生的相关责任和后果由您承担。
若您提供的资料存在瑕疵,导致青果网络无法核实您的身份或无法判断您的需求等,而导致青果网络未能及时处理,给您带来的损失,应由您自行承担。同时,您理解,青果网络对您的请求进行处理需要合理期限,对于青果网络采取措施前您已经产生的损失以及采取措施后因不可归责于青果网络的原因导致的损失,青果网络不承担任何责任。
3.1.1 您可根据自身需求,自行通过青果网络官网在线选购所需服务,购买前您需仔细阅读所购服务对应的服务条款并根据自身需求决定是否购买或使用。双方也可根据实际合作需要,另行签订协议等。
3.1.2 部分青果网络服务的开通可能需要双方另行签订单独的服务协议,单独的服务协议可能以电子文档形式展示,也可能是独立的纸质文档形式展示,您可以根据自身情况决定是否接受服务协议及开通服务。
3.1.3 您需在订单提交后及时完成支付。部分服务可能有时间限制、库存限制或者活动数量等限制,订单提交后,若发生您未及时付款、或付款期间出现数量不足或已达到限量等情况的,您将可能无法使用相关服务。
3.1.4 青果网络可能因营销活动、产品推广等各种原因,在特定时期内推出“限时免费”、“限时优惠”、“限量优惠”、“充值优惠”以及赠送服务等优惠措施(以下统称“优惠措施”),您理解并同意,这些优惠措施可能是暂时性、阶段性或有数量限制的,也可能仅适用于满足特定条件的客户,您需要按照相应的规则购买、使用相应服务。除非另有书面明确说明,优惠措施不可同时叠加适用。
3.2.1 青果网络服务的结算方式为预付费类型,为保证服务及时开通或持续提供,您应当遵守本协议及您使用的服务的服务条款并及时缴纳费用。部分青果网络服务开通后,即使您未新增服务项目或资源,亦未进行新的操作,但由于该部分服务会持续占用资源,因此将持续产生扣费,您应当及时续费或关闭服务。
3.2.2 优惠措施是基于特定条件设置,例如针对特定配置的产品的优惠措施、您需一次性使用特定期限或数量的产品方可享受的优惠措施等(如包年优惠),若您最终未符合特定条件,则无法享受相应的优惠(包括但不限于折扣、代金券赠与、优惠使用其他服务等),双方需按照购买时相应服务的官网原价进行费用结算。
3.2.3 您可以通过账号在线付款或充值续费,也可以通过银行转账方式向青果网络支付费用(为保证服务的持续性,若您选择线下支付费用的,应预留合理时间以便青果网络核实到账情况并完成您账号充值)。
3.2.4 本协议项下的业务发生销售折让、销售退回或其他按照国家规定需要开具红字发票或重新开票的情况,青果网络需按照国家税收规定向您开具红字发票或重新开票,您需按照国家税收规定退回青果网络已开具的发票或向税局递交需青果网络开具红字专用发票的有效证明。双方约定具体按以下政策执行:
(1)如果退票发生在发票开具当月且您尚未进行税务认证抵扣的,您退回发票即可。
(2)如果您已就该发票进行税务认证抵扣,或者退票时间已超过开票日期所在当月的,您应向青果网络提供开具红字发票的必要资料,如《开具红字增值税专用发票信息表》等。
(3)对于青果网络尚未开具发票或已开具发票但尚未交付给您的退款申请,无需您提供发票相关资料。
若无法满足上述条件,则无法办理退款,后果由您自行承担,青果网络不就此承担任何责任。在完成上述退票及开具红字发票流程后,青果网络将在次月内按照您实际消费数额重新开具发票,并将您账号内现金部分剩余款项进行退款。
3.3.1 青果网络向您提供售后服务,协助您解答、处理使用青果网络服务过程中遇到的问题。
3.3.2 青果网络将依照法律法规要求对其系统、设备等采取基础的安全保护措施。若您对安全保护措施的要求高于前述基础的安全保护措施标准的,您有权根据自身需求购买配置更高的安全保护服务或另行配置其他安全防护软件、系统等。
3.3.3 您应自行对您使用的计算机信息系统、设备等采取必要的、有效的安全保护措施,因您未采取前述措施导致权益受损的,由您自行承担责任。
3.3.4 青果网络在服务条款约定内提供可用性保障。如果您对可用性的要求高于服务条款,则需要您主动对自身系统进行高可用性的设置,青果网络可给予必要的协助。
3.4.1 为了向您提供更加完善的服务,青果网络有权定期或不定期地对服务平台或相关设备、系统、软件等进行检修、维护、升级及优化等(统称“常规维护”),如因常规维护造成青果网络服务在合理时间内中断或暂停的,青果网络无需为此向您承担责任。但是,青果网络应当至少提前2小时,就常规维护事宜通知您。若因不可抗力、基础运营商过错等原因导致的非常规维护,青果网络应及时通知您。
3.4.2 为保证服务的安全性和稳定性,青果网络可能进行机房迁移、设备更换等重大调整,前述情况可能导致青果网络服务在合理时间内中断或暂停,青果网络无需为此向您承担责任,但是,青果网络应提前1天通知您,您应予以配合;如您不配合进行调整,或者青果网络无法与您取得联系,由此产生的后果由您自行承担。
3.4.3 如您购买的具体服务含有存储功能的,在该服务到期或终止后,对于您存储在该服务中的数据等任何信息,青果网络将根据该服务的服务条款为您保留相应期限。您应承担保留期限内产生的费用(若有),并按时结清费用、完成全部数据的迁移。保留期限届满后,您的前述信息将被删除。
3.4.4 青果网络有权根据自身运营安排,随时调整、终止部分或全部服务(包括但不限于对服务进行下线、迭代、整合等)。但是,青果网络应提前至少3天通知您,以便您做好相关数据的转移备份以及业务调整等,以保护您的合法权益。
3.5 基于网络服务的及时性、复杂性、高效性等特性及监管要求、政策调整等原因,您同意青果网络可以不时对本协议以及青果网络的相关服务条款进行调整,并通过网站公告、邮件通知、短信通知、系统消息、站内信等方式中的一种或多种予以公布;若您在调整后继续使用青果网络服务的,表示您已充分阅读、理解并接受修改后的内容,也将遵循修改后的内容。
3.6 若您选择使用中国大陆以外的服务,应当确保您符合中国大陆法律法规、政策等的要求,同时,也应当确保您的资质、能力以及使用行为等均符合当地法律法规、政策等的要求。
4.1 您有权依照本协议约定使用青果网络服务并获得青果网络的技术支持和售后服务。
4.2 您在使用青果网络的服务时须遵守相关法律法规及服务条款,并确保拥有法律法规要求的经营资质和能力,不得实施包括但不限于以下行为,也不得为任何违反法律法规的行为提供便利:
4.2.1 反对宪法所规定的基本原则的。
4.2.2 危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的。
4.2.3 损害国家荣誉和利益的。
4.2.4 煽动民族仇恨、民族歧视,破坏民族团结的。
4.2.5 破坏国家宗教政策,宣扬邪教和封建迷信的。
4.2.6 散布谣言,扰乱社会秩序,破坏社会稳定的。
4.2.7 散布淫秽、色情、赌博、暴力、凶杀、恐怖或教唆犯罪的。
4.2.8 侮辱或诽谤他人,侵害他人合法权益的。
4.2.9 实施任何违背“七条底线”的行为。
4.2.10 含有法律、行政法规禁止的其他内容的。
4.3 您在使用青果网络的服务时须维护互联网秩序和安全,不得侵犯任何主体的合法权益,不得实施包括但不限于以下行为,也不得为其提供便利:
4.3.1 实施欺诈、虚伪不实或误导行为,或实施侵害他人知识产权等任何合法权益的行为,如“私服”、“外挂”等。
4.3.2 发布、传播垃圾邮件(SPAM)或包含危害国家秩序和安全、封建迷信、淫秽、色情、低俗等违法违规信息。
4.3.3 不应大量占用,亦不得导致如程序或进程等大量占用青果网络的服务中计算、存储或者网络资源(比如但不限于互联网挖矿等行为),并给青果网络的服务带来严重的、不合理的负荷,影响青果网络与相联通的网络、设备间正常通畅的联系。
4.3.4 实施任何破坏或试图破坏网络安全的行为,包括但不限于以病毒、木马、恶意代码、钓鱼等方式,对网站、服务器进行恶意扫描、非法侵入系统、非法获取数据等。
4.3.5 实施任何改变或试图改变青果网络服务提供的系统配置或破坏系统安全的行为;利用技术或其他手段破坏、扰乱青果网络服务的运营或他人对青果网络服务的使用;以任何方式干扰或企图干扰青果网络任何产品或任何部分、功能的正常运行,或者制作、发布、传播上述工具、方法等。
4.3.6 因从事包括但不限于“DNS 解析”、“安全服务”、“域名代理”、“反向代理”等任何业务,导致您自己频繁遭受攻击(包括但不限于 DDoS 攻击)且未及时更正行为,或未根据青果网络要求消除影响,从而对青果网络服务平台或他人产生影响的。
4.3.7 不利用青果网络的服务提供任何不经网络审查或依靠技术手段成为境内获取境外非法信息的途径。
4.3.8 除青果网络明示许可外,不得修改、翻译、改编、出租、转许可、在信息网络上传播或转让青果网络提供的服务。
4.3.9用户在使用青果网络提供的服务过程中,如涉及第三方,相关单位或人员应具备相应资质,包括但不限于经营许可证,并应根据中华人民共和国相关法律法规规定,落实必要的网络安全措施,包括但不限于人员实名制、留存网络日志,否则应承担由此引起的相关责任。
4.3.10 实施其他破坏互联网秩序和安全的行为。
4.4 您须依照《网络安全法》、《互联网信息服务管理办法》等法律法规的规定保留相关网络日志记录并且不少于六个月时长,包括发布的信息内容及其时间、IP地址、域名等,国家有关机关依法查询时应配合提供。您自行承担未按规定保留相关记录而引起的全部法律责任。
4.5 您应当按照服务条款及时、足额支付费用。若您未及时、足额支付费用的,青果网络有权拒绝开通服务或无需另行通知而中止、终止服务,同时可以采取以下一项或多项措施:
4.5.1 要求您除应依约支付应付费用外,每逾期一天,还应按所欠费用1‰的标准向青果网络支付违约金,直至缴清全部费用为止。
4.5.2 若您逾期付款超过7天,青果网络有权无需另行通知您即可随时采取包括但不限于提前单方解除协议的措施。
4.5.3 若您逾期付款但您使用了预付费服务或您账号有未消耗的现金余额的,则青果网络有权无需另行通知您,而直接将预付费用和现金余额用于抵扣拖欠款项和违约金。
4.5.4 删除您基于使用青果网络服务而存储或产生的部分或全部信息和数据。
5.1 青果网络应当依照本协议约定向您提供青果网络服务和售后支持。
5.2 青果网络仅对青果网络服务本身提供运营维护,您应当保证自身的网络、设备的安全性、稳定性,如发生以下情况,您应及时解决并避免对青果网络服务产生影响:
5.2.1 您内部网络出现问题,包括但不限于超负荷等。
5.2.2 您自有设备或您使用的第三方设备出现故障。
5.2.3 您自行拆离设备或通过其他方式导致网络中断。
5.2.4 其他您自身原因导致的任何故障、网络中断等。
5.3 若青果网络自行发现或根据相关部门的信息、权利人的投诉等发现您可能存在违反相关法律法规或本协议的行为的,青果网络有权根据一般人的认识自行独立判断,并随时单方采取以下措施中的一种或多种:
5.3.1 要求您立即删除、修改相关内容。
5.3.2 限制、暂停向您提供全部或部分青果网络服务(包括但不限于直接对您的部分服务进行下线并收回相关资源、对您账号采取操作限制/账号冻结等措施)。
5.3.3 终止向您提供青果网络服务,终止协议(包括但不限于直接对您的全部服务进行下线并收回相关资源等)。
5.3.4 青果网络根据本协议终止向您提供服务或终止协议的,您预缴的费用将作为违约金归青果网络所有。
5.3.5 依法追究您的其他责任。
青果网络依据本协议采取相应措施(包括但不限于暂停服务、扣除费用、终止协议等),不视为青果网络违约,若因此给您造成损失(包括但不限于业务暂停、数据清空等)的,均由您自行承担。因您违反本协议约定产生的责任和后果由您自行承担,若给青果网络或第三方造成损失的,您应当予以赔偿。
5.4 为合理保护您、您的用户及权利人等各方的利益,青果网络有权制定专门的举报和投诉处理制度,您应当予以遵守。如果青果网络接到第三方对您的投诉或举报,青果网络有权向第三方披露您相关资料(如您的主体资料及您就投诉或举报提交的反通知书、相关证据等全部资料),要求您与投诉方进行协商(包括但不限于建立包含您、青果网络以及投诉方的三方邮件组,供您、投诉方直接沟通、相互举证等,下同),若您投诉或举报其他青果网络的客户,青果网络也有权向被投诉方披露您相关资料(如您的主体资料及您就投诉或举报提交的通知书、相关证据等全部资料),要求您与被投诉方进行协商,以便及时解决投诉、纠纷,保护各方合法权益,您应当予以配合,否则,可能会影响您继续使用青果网络服务,由此造成您或他方损失的,您自行承担。
5.5 青果网络可将本协议部分或全部权利义务转让予第三方,但青果网络须提前30天书面通知您。为本款生效之需要,双方同意签订所有合理必要的文件及采取合理必要的措施。
5.6 您同意青果网络有权使用您的名称、品牌、商标标识等作为商业案例进行宣传、展示。
6.1 您保证,您存储、上传、下载到青果网络服务中,或者利用青果网络服务以分析、分发等任何方式处理的数据,为您依法收集、获取或产生的数据,您不会也不曾以任何方式侵犯任何个人或实体的合法权利。
6.2 您保证其有权使用青果网络服务对前述数据进行存储、上传、下载、分析和分发等任何处理,且前述处理活动均符合相关法律法规的要求,不存在任何违法、侵权或违反其与第三方的合同约定的情形,不会将数据用于违法违规目的。
6.3 您有权自行使用青果网络服务对数据进行上传、分析、删除、更改等处理(具体以您使用的服务的服务条款为准),就数据的删除、更改等处理,您应谨慎操作并承担因该等操作所产生的后果。
6.4 除因您使用青果网络服务所需及法律法规另有规定外,未经您同意,青果网络不会接触或使用您的数据。
6.5 您应根据自身需求自行对数据进行备份,青果网络仅依据相关法律法规要求或服务条款约定提供数据备份服务,青果网络仅在法定或约定提供的数据备份服务的范围内承担责任。
6.6 因您的数据的产生、收集、处理、使用等任何相关事项存在违反法律法规等情况而造成的全部结果及责任均由您自行承担,并且,青果网络有权随时全部或部分终止向您提供青果网络服务。您因此遭受的一切损失或承担的一切责任和费用,由您自行承担。
7.1 双方各自享有的商标权、著作权或者其他知识产权,均仍归各方单独享有,并不会因为双方签订或者履行本协议而转归对方享有,或者转归双方共同享有。
7.2 任何一方均应尊重相对方、第三方的知识产权,如有任何第三方就一方侵犯其知识产权等合法权益的原因向另一方提起诉讼、主张索赔的,责任方应当独立处理相关纠纷,赔偿另一方的直接经济损失,并使另一方免责。
8.1 双方为了本协议目的,已经或将会提供或透露某些保密信息。其中,披露保密信息的一方为“披露方”,而接受保密信息的一方为“接收方”。
8.2 “保密信息”指由披露方持有的与其业务、经营、技术及权利等事项相关的,非公开的信息、资讯、数据、资料等,包括但不限于营业规划,商务资料,与技术有关之知识及信息、创意、设想、方案,提供的物品或厂商资料,用户信息,人事资料,商业计划,服务价格及折扣,财务状况等。
8.3 接收方从披露方所获悉的信息,如有标明或可合理认知为属于披露方的保密信息的,接收方须对披露方的保密信息保密,未经披露方书面同意,不得以任何方式披露给第三方或用于本协议以外目的。接收方应以对待其自身保密信息相同的注意程度(且不得低于合理审慎义务)对待披露方的保密信息。
8.4 尽管有前述约定,符合下列情形之一的,相关信息不被视为保密信息:
8.4.1 接收方在披露方向其披露之前已经通过合法的渠道或方式持有的信息。
8.4.2 该信息已经属于公知领域,或该信息在非因接收方违反本协议的情况下而被公开。
8.4.3 接收方合法自其他有权披露资料的第三方处知悉且不负有保密义务的信息。
8.4.4 由接收方不使用或不参考任何披露方的保密信息而独立获得或开发的。
8.5 如果接收方基于法律法规或监管机关的要求,需要依法披露披露方的保密信息的,不视为违反本协议,但接收方应当在法律许可的范围内尽快通知披露方,同时,接收方应当努力帮助披露方有效限制该保密信息的披露范围,保护披露方合法权益。
8.6 双方保密义务在本协议有效期限内及期限届满后持续有效,直至相关信息不再具有保密意义。
8.7 一旦发生保密信息泄露事件,双方应合作采取一切合理措施避免或者减轻损害后果的产生;如因接收方违反保密义务给披露方造成损失的,接收方应赔偿因此给披露方造成的直接经济损失。
8.8 青果网络会按照公布的《青果网络隐私声明》的规定保护您的相关信息。
各方承诺遵守所有适用的经济与贸易制裁以及出口管制法律法规,包括所有由联合国安全理事会、中国、美国及任何其他国家所制定并执行的制裁决议、法律与法规以及出口管制法律与法规(在前述文件适用于该方的范围内)(下称“适用出口管制法律”)。您承诺不会将青果网络提供的产品或服务用于适用出口管制法律所禁止的用途。非经相关主管机关许可,您及您授权使用青果网络提供的产品或服务的个人或实体不会通过青果网络提供的产品或服务向所适用出口管制法律所制裁或指定的个人或实体提供受控的技术、软件或服务,或以任何方式使得青果网络违反适用出口管制法律。
10.1 您理解并同意,在使用青果网络服务的过程中可能会遇到以下情况使服务发生中断。出现下述情况时,青果网络应及时与相关单位配合进行修复,但是由此给您造成的损失青果网络将予以免责。
10.1.1 不可抗力,包括但不限于自然灾害、政府行为、法律法规颁布调整、罢工(任一方内部劳资纠纷除外)、动乱等不能预见、不能避免并不能克服的客观情况。
10.1.2 基础运营商原因,包括但不限于电信部门技术调整、电信/电力线路被他人破坏、电信/电力部门对电信网络/电力资源进行安装、改造、维护。
10.1.3 网络安全事故,如计算机病毒、木马或其他恶意程序、黑客攻击的破坏。
10.1.4 您通过非青果网络授权的方式使用青果网络服务,您操作不当或您的电脑软件、系统、硬件和通信线路出现故障。
10.1.5 其他非青果网络过错、青果网络无法控制或合理预见的情形。
10.2 因不可抗力、基础运营商原因、网络安全事故或其他超出当事人可合理掌控范围的事件,造成本协议迟延履行或任何一方违约,双方均无需承担违约责任。但是,受影响一方应尽可能及时通知另一方。如前述事件妨碍协议履行达30天以上的,任一方可提前15天书面通知对方终止协议。因本条款终止协议的,任何一方均无须承担违约责任。
10.3 您理解并同意,青果网络的服务是按照现有技术和条件所能达到的现状提供的。青果网络将尽最大努力确保服务的连贯性和安全性,但青果网络不能保证其所提供的服务毫无瑕疵,因此,即使青果网络提供的服务存在瑕疵,但若上述瑕疵是当时行业技术水平所无法避免的,其将不视为青果网络违约,青果网络也无需承担任何责任,双方应友好协作共同解决问题。
10.4 于任何情形下,任一方均不对另一方之任何间接的、偶然的、特殊的或惩罚性的损害和损失(如利润损失、机会损失、向第三方支付的费用、声誉/商誉损失或损害等)承担责任,无论基于合同、保证、侵权或任何其他责任理论,不论任一方是否知道或应当知道上述损失或损害的可能性。
10.5 于任何情形下,青果网络基于本协议及相关订单和青果网络服务向您所承担的赔偿责任(无论基于合同、侵权或任何其他责任理论)的总额,不超过您就造成您损失的青果网络服务已经向青果网络支付的费用总额;如果造成您损失的相应青果网络服务的服务期限超过12个月的,则青果网络的最大赔偿责任不超过损害发生前12个月,您就造成您损失的青果网络服务已经向青果网络支付的费用总额(为免歧义,本处费用指您就实际使用该服务的时长/数量等而实际已支付的现金,不包括代金券、预付但未实际消耗的费用等)。若本条款与双方其他约定或青果网络服务条款冲突或不一致的,以本条约定为准。
11.1 您应当保证和维持客户资料(包括但不限于电话号码、电子邮箱等联系方式)的有效性,客户资料若存在虚假、无效等任何可能导致您无法及时获悉业务通知、服务提示、客户服务、技术支持、纠纷协调、违规处罚等信息的,由您自行承担相应责任。
11.2 您应当根据青果网络官网公布的青果网络的联系方式向青果网络发送通知,双方另有约定除外。
11.3 青果网络可通过网页公告、系统通知、站内信、电子邮件、手机短信、即时通讯工具、函件等方式中的一种或多种向您发送与青果网络服务有关的业务通知、服务提示、验证消息、营销信息等各种信息(包括但不限于更新后的服务条款、服务升级、机房裁撤、广告等)。前述信息在以下情况下视为已送达:
11.3.1 交专人递送的,在收件人签收时视为已送达。
11.3.2 以网页公告等形式公布的,一经公布即生效(另有说明除外)。
11.3.3 以电子形式(包括系统通知、站内信、电子邮件、手机短信、即时通讯工具等)发送的,在发送成功后视为已送达。
11.3.4 以邮资预付的快递公司递送或以挂号信递送的,以投邮后的第3个自然日视为已送达。
如果送达时间为法定节假日的,则以送达后首个工作日为送达日。
12.1 本协议的签订地为福建省泉州市丰泽区。
12.2 本协议的成立、生效、履行、解释及纠纷解决等,均适用中国大陆法律法规(不包括冲突法)。
12.3 因本协议产生之争议,双方应首先协商解决;双方未能协商解决的,任何一方均应将争议提交本协议签订地有管辖权的人民法院裁决。双方无争议的部分,应当继续履行。
13.1 除非另有说明,本协议正文及其附件中所有的“天”均为自然日,结算货币均为人民币。
13.2 本协议的拟定、解释均以中文为准。除双方另有约定外,任何有关本协议的翻译不得作为解释本协议或判定双方当事人意图之依据。
13.3 服务条款为本协议的重要组成部分,与本协议正文具有同等法律效力,您应当予以遵守。(正文完)
## 1. 接口描述
接口请求域名: share.proxy.qg.net。
本接口 (/get) 用于短效代理产品弹性提取模式下提取IP的接口。
默认接口请求频率限制:60次/分钟。
推荐使用调试工具进行调试,[调试工具](https://www.qg.net/tools/IPdebug.html)。
## 2. 输入参数
| 参数名称 | 必选 | 类型 | 描述 |
| -------- | ---- | ------- | ------------------------------------------------------------ |
| key | 是 | String | 公共参数,产品唯一标识。 |
| area | 否 | String | 按地区提取。支持多地区筛选,逗号隔开。比如:"350500,330700"。 |
| area_ex | 否 | String | 排除某些地区提取。支持多地区排除,用逗号隔开。比如:"440100,450000"。 |
| isp | 否 | Integer | 按运营商提取。
0: 不筛选
1: 电信
2: 移动
3: 联通 |
| num | 否 | Integer | 提取个数,默认为1 |
| distinct | 否 | Bool | 去重提取,默认为false。如果为true则不会提取到已经在使用的IP资源。 |
## 3. 输出参数
| 参数名称 | 类型 | 描述 |
| ---------- | --------------------------------- | ------------------------------------------------------------ |
| code | String | 请求状态码。 |
| data | Array of [IP](https://www.qg.net/doc/1839.html) | IP资源列表。
**注:IP结构中的server才是代理地址,proxy_ip是代理的真实出口IP。** |
| request_id | String | 唯一请求ID,每次请求都会返回。定位问题时需要提供该次请求的 request_id。 |
## 4. 示例
#### 输入示例
```
GET https://share.proxy.qg.net/get?key=<您的key信息>&<其他输入参数>
```
#### 输出示例
```json
{
"code": "SUCCESS",
"data": [
{
"proxy_ip": "123.54.55.24",
"server": "123.54.55.24:59419",
"area": "河南省商丘市",
"isp": "电信",
"deadline": "2023-02-25 15:38:36"
}
],
"request_id": "83158ebe-be6c-40f7-a158-688741083edc"
}
```
## 5. 错误码
| 错误码 | 描述 |
| ---------------------- | -------------------------------------------------------- |
| INTERNAL_ERROR | 系统内部异常。 |
| INVALID_PARAMETER | 参数错误(包含参数格式、类型等错误)。 |
| INVALID_KEY | Key不存在或已过期。 |
| UNAVAILABLE_KEY | Key不可用,已过期或被封禁 |
| ACCESS_DENY | Key没有此接口的权限。 |
| API_AUTH_DENY | Api授权不通过,请检查[Api鉴权配置](https://www.qg.net/user/proxyIpManage)。 |
| KEY_BLOCK | Key被封禁。 |
| REQUEST_LIMIT_EXCEEDED | 请求频率超出限制。 |
| NO_RESOURCE_FOUND | 资源不足。 |
| FAILED_OPERATION | 提取失败。 |
| EXTRACT_LIMIT_EXCEEDED | 超出提取配额。今天提取的IP数超出了购买的IP数,请明天再提取使用或者升级IP数。 |
青果为有经验的开发者提供多种API接口及代码示例,以协助开发者更便利地使用代理。 本篇仅以【提取IP】这一操作为例,介绍如何使用API接口-代码方式来使用代理。 ## 步骤总览 ![api2](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads%2Fimage%2F2024-12-16%2F153708e85f5ad.png) ## 一、API鉴权与代理授权 青果支持开发者对API鉴权和代理授权验证进行自主管理,以下介绍这一阶段的操作 **API鉴权**指是指在访问API接口时对用户进行身份验证和权限检查,以确保API接口的安全性和可靠性。 用户可根据意愿选择开启和关闭API鉴权(默认关闭),青果提供的鉴权方式有密码和白名单两种,在对应业务【操作】-【业务设置】-【API鉴权】中进行设置即可。 ![image-20241216145626144](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads%2Fimage%2F2024-12-16%2F1456261cfce8f.png) **代理授权验证**是指对代理身份进行验证,只有通过对应信息才能使用该代理IP,确保您的使用权益和安全性。 青果代理IP支持白名单和帐密两种验证方式,可自主选择使用。 白名单模式,即把要实现代理的服务器IP添加进代理白名单中,后续使用该IP连接代理就能成功; 账密模式,即先获取该代理业务的账号密码信息,连接代理时填入账密进行验证就可使用代理。 相关入口和信息在业务管理页面可看到。 ![image-20240425113427455](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads%2Fimage%2F2024-04-25%2F113427470a7d8.png) 详细步骤可查看>[如何使用API鉴权](https://www.qg.net/doc/2283.html)、[代理验证](https://www.qg.net/doc/1574.html) ## 二、获取api接口 青果给开发者提供两种方式来获得api接口 ① 使用调试工具/提取工具 调试工具是青果为开发者推出的快速获取接口&调试的简便工具,传送门[>>调试工具](https://www.qg.net/tools/IPdebug.html) 使用调试工具,用户需要先在左侧栏目中选好产品及接口类型,并在右侧表格的参数值列中填写所需信息,便可在页面上方看到完整的【请求地址】,这便是提取IP的API接口。 点击【发送】还能快速调试,查看响应结果,确认该代理接口是否可用。 ![image-20240425151330263](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads%2Fimage%2F2024-04-25%2F151330048e875.png) 调试工具除了有提取IP接口,还提供查询在用IP、资源池、资源地区等接口。 若只需要提取IP,也可以使用提取工具,进行简单的选择便可以获取一样的接口链接。传送门[>>提取工具 ](https://www.qg.net/tools/IPget.html) ![image-20240425151955693](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads%2Fimage%2F2024-04-25%2F1519556890211.png) ② 查看api接口文档 除了简便工具,开发者也可以通过更原始的接口文档,自主编写所需的接口链接。 **点击了解API接口文档 >[弹性提取类型](https://www.qg.net/doc/product/6_255_263_264/2254.html)、[按量提取类型](https://www.qg.net/doc/product/6_255_263_265/2140.html)、[均匀提取类型](https://www.qg.net/doc/product/6_255_263_266/2258.html)、[通道提取类型](https://www.qg.net/doc/product/6_255_263_267/2139.html)** ## 三、代理测试 在代理服务器中打开命令行,输入相应的代理信息进行运行,若响应成功,则代理可用。 以下图为例,通过curl命令测试账密模式的代理结果,查询IP并成功响应。 `curl -x http://{authkey}:{authpwd}@{118.92.69.112}:{32105} {targetUrl}` ![image-20240426180650605](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads%2Fimage%2F2024-04-26%2F1806504f4e31e.png) 若响应不成功,可对应[错误码表](https://www.qg.net/doc/1838.html),排查问题。 ## 四、编写采集程序 测试代理可用后,便可开始编写代理采集程序了。 青果提供了多种编程语言的代码示例以及SDK下载包供开发者参考, 详情查看 - [SDK下载](https://www.qg.net/doc/sdk/9_230/1745.html) - [C语言代码示例](https://www.qg.net/doc/sdk/9_230/1694.html) - [Go语言代码示例](https://www.qg.net/doc/sdk/9_230/1695.html) - [PHP语言代码示例](https://www.qg.net/doc/sdk/9_230/1696.html) - [Python语言代码示例](https://www.qg.net/doc/sdk/9_230/1697.html) - [Java语言代码示例](https://www.qg.net/doc/sdk/9_230/1698.html) - [Shell语言代码示例](https://www.qg.net/doc/sdk/9_230/1699.html) - [C#语言代码示例](https://www.qg.net/doc/sdk/9_230/1700.html) - [Node语言代码示例](https://www.qg.net/doc/sdk/9_230/1701.html) **注:**青果代理IP产品都有相对应的IP存活周期,其有效时长是从提取到IP时算起,超过这个时长IP会失效。
## 1 接口描述 接口地址: https://proxy.qg.net/allocate ; 本接口是用于请求提取代理IP资源的; 请求频率限制:按时业务是(通道数*5+10)次/分钟;按量业务则是60次/分钟; 方法:HTTP、GET,需要注意不能混合使用; 编码:参数和返回内容均采用utf-8编码。 ## 2 输入参数说明 |参数名|是否必选|类型|描述| |:---- |:---|:----- |----- | |Key |是 |String |申请的Key值 | | Num |否 |Integer|申请的数量;默认1个 | |KeepAlive |否 |Integer | IP生存周期,单位:分钟。仅针对动态独享用户有效,默认为1440分钟(24小时) | |AreaId |否 |Integer |区域ID;默认随机 | |ISP |否 |Integer | 运营商ID;默认随机 | |Detail |否 |Integer|详情,0:关闭;1:开启;默认为0 | |Distinct |否 |Integer|去重,仅针对动态独享有效。0:关闭;1:开启;默认为0 | ## 3 返回值 接口可返回文本格式、json格式、xml格式,字段说明如下: |参数名|类型|描述| |:---- |:----- |----- | |Code |Integer |结果编码,0:成功;-1:失败| |TaskID |Integer |任务ID| |Num |Intger |申请数量| |Data |Array | 代理IP数据信息,包含节点IP、端口、失效日期 | |Msg |String |区域ID,多个用","分割;\*代表全部| ## 4 示例 请求接口示例: ``` curl "https://proxy.qg.net/allocate?Key=请改成您的Key&Num=1" ``` 返回示例: ``` { "Code": 0, "TaskID": "91107E16D28AC5A", "Num": "1", "Data": [ { "IP": "127.0.0.1", "port": "49168", "deadline": "2018-05-11 02:56:02", "host": "127.0.0.1:49168" } ] } ``` **重点:在共享企业池的产品中使用该接口,提取出来的IP资源Data结构中的host和IP是不一样的,其他产品下host和IP是一样的。企业池产品中用户使用host进行代理,这时真实的代理IP为IP字段的IP(运营商为移动的情况下可能不会那么准确,即使代理IP可能不通,也都是同一个地区的IP,影响不会大)** ## 5 接口返回错误码 | 错误码 | 描述 | | ------------ | ------------ | | -1 | 未知错误 | | -10 | 参数不合法 | | -11 | 请求过于频繁 | | -12 | Authkey被封禁 | | -13 | 当前客户端IP不在授权名单中 | | -14 | Pwd不合法 | | -15 | Authkey对应的业务无此权限 | | -100 | 计划不存在或已过期 | | -103 | 资源不足 | | -104 | 申请资源失败 | | -105 | 申请的IP数超过允许申请的IP数 |
|编号|区域| |:---- |:---|:----- |----- | |110000|北京市 |110100|市辖区 |120000|天津市 |120100|市辖区 |130000|河北省 |130100|石家庄市 |130200|唐山市 |130300|秦皇岛市 |130400|邯郸市 |130500|邢台市 |130600|保定市 |130700|张家口市 |130800|承德市 |130900|沧州市 |131000|廊坊市 |131100|衡水市 |140000|山西省 |140100|太原市 |140200|大同市 |140300|阳泉市 |140400|长治市 |140500|晋城市 |140600|朔州市 |140700|晋中市 |140800|运城市 |140900|忻州市 |141000|临汾市 |141100|吕梁市 |150000|内蒙古自治区 |150100|呼和浩特市 |150200|包头市 |150300|乌海市 |150400|赤峰市 |150500|通辽市 |150600|鄂尔多斯市 |150700|呼伦贝尔市 |150800|巴彦淖尔市 |150900|乌兰察布市 |152200|兴安盟 |152500|锡林郭勒盟 |152900|阿拉善盟 |210000|辽宁省 |210100|沈阳市 |210200|大连市 |210300|鞍山市 |210400|抚顺市 |210500|本溪市 |210600|丹东市 |210700|锦州市 |210800|营口市 |210900|阜新市 |211000|辽阳市 |211100|盘锦市 |211200|铁岭市 |211300|朝阳市 |211400|葫芦岛市 |220000|吉林省 |220100|长春市 |220200|吉林市 |220300|四平市 |220400|辽源市 |220500|通化市 |220600|白山市 |220700|松原市 |220800|白城市 |222400|延边朝鲜族自治州 |230000|黑龙江省 |230100|哈尔滨市 |230200|齐齐哈尔市 |230300|鸡西市 |230400|鹤岗市 |230500|双鸭山市 |230600|大庆市 |230700|伊春市 |230800|佳木斯市 |230900|七台河市 |231000|牡丹江市 |231100|黑河市 |231200|绥化市 |232700|大兴安岭地区 |310000|上海市 |310100|市辖区 |320000|江苏省 |320100|南京市 |320200|无锡市 |320300|徐州市 |320400|常州市 |320500|苏州市 |320600|南通市 |320700|连云港市 |320800|淮安市 |320900|盐城市 |321000|扬州市 |321100|镇江市 |321200|泰州市 |321300|宿迁市 |330000|浙江省 |330100|杭州市 |330200|宁波市 |330300|温州市 |330400|嘉兴市 |330500|湖州市 |330600|绍兴市 |330700|金华市 |330800|衢州市 |330900|舟山市 |331000|台州市 |331100|丽水市 |340000|安徽省 |340100|合肥市 |340200|芜湖市 |340300|蚌埠市 |340400|淮南市 |340500|马鞍山市 |340600|淮北市 |340700|铜陵市 |340800|安庆市 |341000|黄山市 |341100|滁州市 |341200|阜阳市 |341300|宿州市 |341500|六安市 |341600|亳州市 |341700|池州市 |341800|宣城市 |350000|福建省 |350100|福州市 |350200|厦门市 |350300|莆田市 |350400|三明市 |350500|泉州市 |350600|漳州市 |350700|南平市 |350800|龙岩市 |350900|宁德市 |360000|江西省 |360100|南昌市 |360200|景德镇市 |360300|萍乡市 |360400|九江市 |360500|新余市 |360600|鹰潭市 |360700|赣州市 |360800|吉安市 |360900|宜春市 |361000|抚州市 |361100|上饶市 |370000|山东省 |370100|济南市 |370200|青岛市 |370300|淄博市 |370400|枣庄市 |370500|东营市 |370600|烟台市 |370700|潍坊市 |370800|济宁市 |370900|泰安市 |371000|威海市 |371100|日照市 |371300|临沂市 |371400|德州市 |371500|聊城市 |371600|滨州市 |371700|菏泽市 |410000|河南省 |410100|郑州市 |410200|开封市 |410300|洛阳市 |410400|平顶山市 |410500|安阳市 |410600|鹤壁市 |410700|新乡市 |410800|焦作市 |410900|濮阳市 |411000|许昌市 |411100|漯河市 |411200|三门峡市 |411300|南阳市 |411400|商丘市 |411500|信阳市 |411600|周口市 |411700|驻马店市 |419000|省直辖县级行政区划 |420000|湖北省 |420100|武汉市 |420200|黄石市 |420300|十堰市 |420500|宜昌市 |420600|襄阳市 |420700|鄂州市 |420800|荆门市 |420900|孝感市 |421000|荆州市 |421100|黄冈市 |421200|咸宁市 |421300|随州市 |422800|恩施土家族苗族自治州 |429000|省直辖县级行政区划 |430000|湖南省 |430100|长沙市 |430200|株洲市 |430300|湘潭市 |430400|衡阳市 |430500|邵阳市 |430600|岳阳市 |430700|常德市 |430800|张家界市 |430900|益阳市 |431000|郴州市 |431100|永州市 |431200|怀化市 |431300|娄底市 |433100|湘西土家族苗族自治州 |440000|广东省 |440100|广州市 |440200|韶关市 |440300|深圳市 |440400|珠海市 |440500|汕头市 |440600|佛山市 |440700|江门市 |440800|湛江市 |440900|茂名市 |441200|肇庆市 |441300|惠州市 |441400|梅州市 |441500|汕尾市 |441600|河源市 |441700|阳江市 |441800|清远市 |441900|东莞市 |442000|中山市 |445100|潮州市 |445200|揭阳市 |445300|云浮市 |450000|广西壮族自治区 |450100|南宁市 |450200|柳州市 |450300|桂林市 |450400|梧州市 |450500|北海市 |450600|防城港市 |450700|钦州市 |450800|贵港市 |450900|玉林市 |451000|百色市 |451100|贺州市 |451200|河池市 |451300|来宾市 |451400|崇左市 |460000|海南省 |460100|海口市 |460200|三亚市 |460300|三沙市 |460400|儋州市 |469000|省直辖县级行政区划 |500000|重庆市 |500100|市辖区 |500200|县 |510000|四川省 |510100|成都市 |510300|自贡市 |510400|攀枝花市 |510500|泸州市 |510600|德阳市 |510700|绵阳市 |510800|广元市 |510900|遂宁市 |511000|内江市 |511100|乐山市 |511300|南充市 |511400|眉山市 |511500|宜宾市 |511600|广安市 |511700|达州市 |511800|雅安市 |511900|巴中市 |512000|资阳市 |513200|阿坝藏族羌族自治州 |513300|甘孜藏族自治州 |513400|凉山彝族自治州 |520000|贵州省 |520100|贵阳市 |520200|六盘水市 |520300|遵义市 |520400|安顺市 |520500|毕节市 |520600|铜仁市 |522300|黔西南布依族苗族自治州 |522600|黔东南苗族侗族自治州 |522700|黔南布依族苗族自治州 |530000|云南省 |530100|昆明市 |530300|曲靖市 |530400|玉溪市 |530500|保山市 |530600|昭通市 |530700|丽江市 |530800|普洱市 |530900|临沧市 |532300|楚雄彝族自治州 |532500|红河哈尼族彝族自治州 |532600|文山壮族苗族自治州 |532800|西双版纳傣族自治州 |532900|大理白族自治州 |533100|德宏傣族景颇族自治州 |533300|怒江傈僳族自治州 |533400|迪庆藏族自治州 |540000|西藏自治区 |540100|拉萨市 |540200|日喀则市 |540300|昌都市 |540400|林芝市 |540500|山南市 |540600|那曲市 |542500|阿里地区 |610000|陕西省 |610100|西安市 |610200|铜川市 |610300|宝鸡市 |610400|咸阳市 |610500|渭南市 |610600|延安市 |610700|汉中市 |610800|榆林市 |610900|安康市 |611000|商洛市 |620000|甘肃省 |620100|兰州市 |620200|嘉峪关市 |620300|金昌市 |620400|白银市 |620500|天水市 |620600|武威市 |620700|张掖市 |620800|平凉市 |620900|酒泉市 |621000|庆阳市 |621100|定西市 |621200|陇南市 |622900|临夏回族自治州 |623000|甘南藏族自治州 |630000|青海省 |630100|西宁市 |630200|海东市 |632200|海北藏族自治州 |632300|黄南藏族自治州 |632500|海南藏族自治州 |632600|果洛藏族自治州 |632700|玉树藏族自治州 |632800|海西蒙古族藏族自治州 |640000|宁夏回族自治区 |640100|银川市 |640200|石嘴山市 |640300|吴忠市 |640400|固原市 |640500|中卫市 |650000|新疆维吾尔自治区 |650100|乌鲁木齐市 |650200|克拉玛依市 |650400|吐鲁番市 |650500|哈密市 |652300|昌吉回族自治州 |652700|博尔塔拉蒙古自治州 |652800|巴音郭楞蒙古自治州 |652900|阿克苏地区 |653000|克孜勒苏柯尔克孜自治州 |653100|喀什地区 |653200|和田地区 |654000|伊犁哈萨克自治州 |654200|塔城地区 |654300|阿勒泰地区 |659000|自治区直辖县级行政区划
## 1 说明
通过编码使用隧道代理(全球HTTP)主要有以下两步骤:
(1)购买成功后,先在[会员中心](https://www.qg.net/user/ "会员中心")查看隧道信息,进行本地调试和验证;[查看测试步骤>>](https://www.qg.net/doc/1574.html "查看测试步骤>>")
(2)参考[代码样例](https://www.qg.net/doc/1879.html)请求隧道代理访问目标网站。
## 2 API接口
隧道不支持使用API接口进行提取IP等调用,但提供白名单功能的API接口。
| 接口类型 | 接口 |
| ---------- | --------------------- | ------------------ |
| 白名单相关 | [添加白名单IP](https://www.qg.net/doc/178.html "添加白名单IP")
[删除白名单IP](https://www.qg.net/doc/179.html "删除白名单IP")
[查询白名单IP](https://www.qg.net/doc/180.html "[查询白名单IP]")
**重点:**目前隧道代理仅支持IP白名单相关接口,隧道代理的使用主要参考[代码示例](https://www.qg.net/doc/1879.html "代码示例")。
## Java HttpURLConnection ```java package com.qgproxy; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.Authenticator; import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.PasswordAuthentication; import java.net.Proxy; import java.net.URL; class QGProxyAuthenticator extends Authenticator { private String user, password; public QGProxyAuthenticator(String user, String password) { this.user = user; this.password = password; } protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user, password.toCharArray()); } } class QGProxy { public static void main(String args[]) { // 如果您的本地jdk版本在Java 8 Update 111以上,需要增加以下代码 // System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "false"); // System.setProperty("jdk.http.auth.proxying.disabledSchemes", "false"); String targetUrl = "https://test.ipw.cn"; // 如果上面目标站不可用,请使用ip.sb、ipinfo.io、ip-api.com、64.ipcheck.ing String proxyIp = "您的代理IP"; int proxyPort = 端口号; String authKey = "请改成您的Key"; String password = "请改成您的AuthPwd"; try { URL url = new URL(targetUrl); Authenticator.setDefault(new QGProxyAuthenticator(authKey, password)); InetSocketAddress socketAddress = new InetSocketAddress(proxyIp, proxyPort); Proxy proxy = new Proxy(Proxy.Type.HTTP, socketAddress); HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy); byte[] response = readStream(connection.getInputStream()); System.out.println(new String(response)); } catch (Exception e) { System.out.println(e.getLocalizedMessage()); } } public static byte[] readStream(InputStream inStream) throws Exception { ByteArrayOutputStream outSteam = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = -1; while ((len = inStream.read(buffer)) != -1) { outSteam.write(buffer, 0, len); } outSteam.close(); inStream.close(); return outSteam.toByteArray(); } } ``` ## Java okhttp(4.10.0版本以上) ```java package com.qgproxy; import okhttp3.*; import java.io.IOException; import java.net.InetSocketAddress; import java.net.Proxy; import java.util.concurrent.TimeUnit; public class QGProxy { final static String proxyIp = "您的代理IP"; final static Integer proxyPort = 端口号; final static String authKey = "请改成您的Key"; final static String password = "请改成您的AuthPwd"; public Response request() throws IOException { Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyIp, proxyPort)); OkHttpClient client = new OkHttpClient.Builder() .proxy(proxy) .proxyAuthenticator((route, response) -> { String credential = Credentials.basic(authKey, password); return response.request().newBuilder().header("Proxy-Authorization", credential).build(); }). build(); Request request = new Request.Builder().url("https://api.ipify.org").get().build(); return client.newCall(request).execute(); } public static void main(String[] args) { QGProxy qgProxy = new QGProxy(); try { Response resp = qgProxy.request(); System.out.println(resp.body().string()); } catch (Exception e) { System.out.printf("failed to proxy: %s\n", e.getMessage()); } } } ``` ## Java jsoup ```java package com.qgproxy; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import java.io.IOException; import java.net.Authenticator; import java.net.InetSocketAddress; import java.net.PasswordAuthentication; import java.net.Proxy; public class QGProxy { final static String proxyIp = "您的代理IP"; final static Integer proxyPort = 端口号; final static String authKey = "请改成您的Key"; final static String password = "请改成您的AuthPwd"; public static void main(String[] args) throws Exception { String targetUrl = "https://test.ipw.cn"; // 如果上面目标站不可用,请使用ip.sb、ipinfo.io、ip-api.com、64.ipcheck.ing Authenticator.setDefault(new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(authKey, password.toCharArray()); } }); // 如果您的本地jdk版本在Java 8 Update 111以上,需要增加以下代码 // System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "false"); // System.setProperty("jdk.http.auth.proxying.disabledSchemes", "false"); Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyIp, proxyPort)); try { Document doc = Jsoup.connect(targetUrl).ignoreContentType(true).timeout(10000).proxy(proxy).get(); if (doc != null) { System.out.println(doc.body().html()); } } catch (IOException e) { e.printStackTrace(); } } } ``` ## Java HttpClient 3.X ```java package com.qgproxy; import java.io.IOException; import org.apache.http.HttpHost; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; public class QGProxy { public static void main(String[] args) { String targetUrl = "https://test.ipw.cn"; // 访问的目标站点 // 如果上面目标站不可用,请使用ip.sb、ipinfo.io、ip-api.com、64.ipcheck.ing String proxyIp = "您的代理IP"; int proxyPort = 端口号; String authKey = "请改成您的Key"; String password = "请改成您的AuthPwd"; try { HttpHost proxy = new HttpHost(proxyIp, proxyPort, "http"); HttpHost target = new HttpHost(targetUrl, 80); // 设置认证 CredentialsProvider provider = new BasicCredentialsProvider(); provider.setCredentials(new AuthScope(proxy), new UsernamePasswordCredentials(authKey, password)); CloseableHttpClient httpClient = HttpClients.custom().setDefaultCredentialsProvider(provider).build(); RequestConfig config = RequestConfig.custom().setProxy(proxy).build(); HttpGet httpGet = new HttpGet("/ip"); httpGet.setConfig(config); CloseableHttpResponse resp = null; resp = httpClient.execute(target, httpGet); if (resp.getStatusLine().getStatusCode() == 200) { System.out.println("OK"); } System.out.println(resp.getStatusLine()); } catch (IOException e) { e.printStackTrace(); } } } ``` ## Java HttpClient 4.X ```java package com.qgproxy import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.net.URI; import java.util.Arrays; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.http.Header; import org.apache.http.HeaderElement; import org.apache.http.HttpHost; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.AuthCache; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.HttpRequestRetryHandler; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.config.AuthSchemes; import org.apache.http.client.entity.GzipDecompressingEntity; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.config.Registry; import org.apache.http.config.RegistryBuilder; import org.apache.http.conn.socket.ConnectionSocketFactory; import org.apache.http.conn.socket.LayeredConnectionSocketFactory; import org.apache.http.conn.socket.PlainConnectionSocketFactory; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.impl.auth.BasicScheme; import org.apache.http.impl.client.BasicAuthCache; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.ProxyAuthenticationStrategy; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.message.BasicHeader; import org.apache.http.message.BasicNameValuePair; import org.apache.http.NameValuePair; import org.apache.http.util.EntityUtils; public class QGProxy { final static String proxyHost = "您的代理IP"; final static Integer proxyPort = 端口号; final static String proxyUser = "请改成您的key"; final static String proxyPass = "请改成您的password"; private static PoolingHttpClientConnectionManager cm = null; private static HttpRequestRetryHandler httpRequestRetryHandler = null; private static HttpHost proxy = null; private static CredentialsProvider credsProvider = null; private static RequestConfig reqConfig = null; static { ConnectionSocketFactory plainsf = PlainConnectionSocketFactory.getSocketFactory(); LayeredConnectionSocketFactory sslsf = SSLConnectionSocketFactory.getSocketFactory(); Registry registry = RegistryBuilder.create() .register("http", plainsf) .register("https", sslsf) .build(); cm = new PoolingHttpClientConnectionManager(registry); cm.setMaxTotal(10); cm.setDefaultMaxPerRoute(5); proxy = new HttpHost(proxyHost, proxyPort, "http"); credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(proxyUser, proxyPass)); reqConfig = RequestConfig.custom() .setExpectContinueEnabled(false) .setProxy(new HttpHost(proxyHost, proxyPort)) .build(); } public static void doRequest(HttpRequestBase httpReq) { CloseableHttpResponse httpResp = null; try { httpReq.setConfig(reqConfig); CloseableHttpClient httpClient = HttpClients.custom() .setConnectionManager(cm) .setDefaultCredentialsProvider(credsProvider) .build(); AuthCache authCache = new BasicAuthCache(); authCache.put(proxy, new BasicScheme()); authCache.put(proxy, new BasicScheme(ChallengeState.PROXY)); HttpClientContext localContext = HttpClientContext.create(); localContext.setAuthCache(authCache); httpResp = httpClient.execute(httpReq, localContext); System.out.println(httpResp.getStatusLine().getStatusCode();); BufferedReader rd = new BufferedReader(new InputStreamReader(httpResp.getEntity().getContent())); String line = ""; while((line = rd.readLine()) != null) { System.out.println(line); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (httpResp != null) { httpResp.close(); } } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { String targetUrl = "https://api.ipify.org"; try { HttpGet httpGet = new HttpGet(targetUrl); doRequest(httpGet); } catch (Exception e) { e.printStackTrace(); } } } ```