注册
登录
 文档中心 产品介绍 开发指南 API接口 代码样例 使用帮助
如何使用带有用户名密码认证的HTTP(S)代理
站大爷 官方 2019-04-12 26840 浏览

一、推荐使用环境

当您使用代理IP的终端的公网IP不固定,或者需要多机器同时使用代理IP时,"用户名+密码"授权是一个不错的选择。这种授权方式可以更好地保护您的隐私和安全,防止未授权的用户访问您的数据。

如何使用带有用户名密码认证的HTTP(S)代理

二、用户名密码授权

在后台的实例管理下,切换当前授权模式为"用户名+密码",其中用户名为实例ID,密码是8位数字的实例密码(不是登录密码,也不用MD5加密)。

三、授权错误提示

如果用户认证错误,代理服务器会返回407 Proxy Authentication Required错误。这意味着您的请求没有通过代理服务器的身份验证,需要提供正确的用户名和密码或者正确的使用才能继续访问。

四、身份认证信息

如果代码的 HTTP 请求方法不支持以用户名+密码的形式设置身份认证信息, 则需要手动为每个 HTTP 请求增加Proxy-Authorization协议头, 其值为 Basic <base64>。其中 <base64> 为 "用户名" 和 "密码" 通过 : 拼接后, 再经由 BASE64 编码得到的字符串。 注意:Java和Python在使用"用户名+密码"授权时,需要注意保持http或https协议的一致,详情参看《解密Java、Python在使用账号密码连接代理IP时为什么总是返回407报错》。

五、参考案例

a、在浏览器中使用代理(以IE浏览器为例)

打开 IE 浏览器,依次点击打开 "菜单 -> 工具 -> Internet 选项 -> 连接 -> 局域网设置", 勾选"为 LAN 使用代理服务器"。如下图所示:

如何使用带有用户名密码认证的HTTP(S)代理

输入 HTTP 代理 IP 和端口,然后打开任意网站,会出现"Windows 安全"窗口(如下图示),输入代 理的用户名和密码,勾选"记住我的凭据"确定即可。

如何使用带有用户名密码认证的HTTP(S)代理

b、在 Python中使用代理

import requests

#你要访问的网址
url = 'http://www.ip138.com/'

proxies = {
	'http': 'http://账号:密码@ip:port',
	'https': 'http://账号:密码@ip:port'
#"用户名+密码"授权,账号为实例ID,密码为8位数字的密码,不用MD5加密,在后台的实例管理下可以看到
}
response = requests.get(url, proxies=proxies)

c、在PHP中使用代理

<?php
function curlFile($url,$proxy_ip,$proxy_port,$loginpassw)
{
//$loginpassw = '账号:密码';
//$proxy_ip = 'ip';
//$proxy_port = 'port';
//$url = 'http://www.ip138.com';
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_PROXYPORT,$proxy_port);
curl_setopt($ch,CURLOPT_PROXYTYPE,'http');
curl_setopt($ch,CURLOPT_PROXY,$proxy_ip);
curl_setopt($ch,CURLOPT_PROXYUSERPWD,$loginpassw);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
?>

d、在C#中使用代理

using System;
using System.Net;
namespace ProxyTest
{
class Program
{
static void Main(string[] args)
{
WebClient wc = new WebClient();
wc.Proxy = new WebProxy("ip", port);
wc.Proxy.Credentials = new NetworkCredential("帐号", "密码");
string text = wc.DownloadString("http://www.ip138.com");
Console.WriteLine(text);
}
}
}

e、在 VC Win32 Wininet 库中使用代理

#include <windows.h>
#include <wininet.h>
#include <stdio.h>
#pragma comment(lib, "wininet.lib")
int main(int argc, char *argv[], char *env[])
{
char url[] = "http://www.ip138.com/";
char proxyinfo[] = "ip:port";
char usernm[] = "帐号";
char passwd[] = "密码";
char text[8192] = {};
DWORD dwReadSize = 0;
BOOL bOK = FALSE;
HINTERNET hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_PROXY, proxyinfo, NULL,
0);
HINTERNET hUrl = InternetOpenUrl(hInternet, url, NULL, 0, 0, NULL);
bOK = InternetSetOption(hUrl, INTERNET_OPTION_PROXY_USERNAME, usernm,
strlen(usernm));
bOK = InternetSetOption(hUrl, INTERNET_OPTION_PROXY_PASSWORD, passwd,
strlen(passwd));
bOK = (BOOL)InternetReadFile(hUrl, text, sizeof(text), &dwReadSize);
printf(text);
return 0;
}


立即注册站大爷用户,免费试用全部产品
立即注册站大爷用户,免费试用全部产品