帮助文档>常见问题>操作问题 > 如何使用带有用户名密码认证的HTTP(S)代理

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

发布时间:2022-07-03 00:01
1.推荐使用环境

当您的终端IP不固定(如铁通、鹏博士等),或者需要多机器同时使用代理IP时;

2.用户名 密码

用户名是AuthKey,密码AuthPwd,用户名和密码都可以在用户中心的业务管理面板中查看;

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

3.授权错误提示

代理的用户名密码认证协议一般采用标准的 HTTP Basic Authentication。如果用户认证错误,系统会返回 407 Proxy Authentication Required;

4.请求协议头

如果代码的 HTTP 请求方法不支持以用户名 密码的形式设置身份认证信息, 则需要手动为每个 HTTP 请求增加Proxy-Authorization协议头, 其值为 Basic 。

其中 为 “用户名” 和 “密码” 通过 : 拼接后, 再经由 BASE64 编码得到的字符串;

5.参考案例
(1).在浏览器中使用代理(以IE浏览器为例)

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

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

(2).在 Python中使用代理
  1. ````
  2. import urllib2
  3. #设置你的HTTP代理包含用户名密码
  4. proxy='账号:密码@ip:port'
  5. #你要访问的网址
  6. url = 'http://www.ip138.com/'
  7. opener = urllib2.build_opener()
  8. if url.lower().startswith('https://'):
  9. opener.add_handler(urllib2.ProxyHandler({'https' : proxy}))
  10. else:
  11. opener.add_handler(urllib2.ProxyHandler({'http' : proxy}))
  12. request = urllib2.Request(url)
  13. response = opener.open(request)
  14. content = response.read()
(3).在PHP中使用代理
  1. function curlFile($url,$proxy_ip,$proxy_port,$loginpassw)
  2. {
  3. //$loginpassw = '账号:密码';
  4. //$proxy_ip = 'ip';
  5. //$proxy_port = 'port';
  6. //$url = 'http://www.ip138.com';
  7. $ch = curl_init();
  8. curl_setopt($ch,CURLOPT_URL,$url);
  9. curl_setopt($ch,CURLOPT_HEADER,0);
  10. curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  11. curl_setopt($ch,CURLOPT_PROXYPORT,$proxy_port);
  12. curl_setopt($ch,CURLOPT_PROXYTYPE,'http');
  13. curl_setopt($ch,CURLOPT_PROXY,$proxy_ip);
  14. curl_setopt($ch,CURLOPT_PROXYUSERPWD,$loginpassw);
  15. $data = curl_exec($ch);
  16. curl_close($ch);
  17. return $data;
  18. }
  19. ?>
(4).在C#中使用代理
  1. using System;
  2. using System.Net;
  3. namespace ProxyTest
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. WebClient wc = new WebClient();
  10. wc.Proxy = new WebProxy("ip", port);
  11. wc.Proxy.Credentials = new NetworkCredential("帐号", "密码");
  12. string text = wc.DownloadString("http://www.ip138.com");
  13. Console.WriteLine(text);
  14. }
  15. }
  16. }
(5)在 VC Win32 Wininet 库中使用代理
  1. #include
  2. #include
  3. #include
  4. #pragma comment(lib, "wininet.lib")
  5. int main(int argc, char *argv[], char *env[])
  6. {
  7. char url[] = "http://www.ip138.com/";
  8. char proxyinfo[] = "ip:port";
  9. char usernm[] = "帐号";
  10. char passwd[] = "密码";
  11. char text[8192] = {};
  12. DWORD dwReadSize = 0;
  13. BOOL bOK = FALSE;
  14. HINTERNET hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_PROXY, proxyinfo, NULL,
  15. 0);
  16. HINTERNET hUrl = InternetOpenUrl(hInternet, url, NULL, 0, 0, NULL);
  17. bOK = InternetSetOption(hUrl, INTERNET_OPTION_PROXY_USERNAME, usernm,
  18. strlen(usernm));
  19. bOK = InternetSetOption(hUrl, INTERNET_OPTION_PROXY_PASSWORD, passwd,
  20. strlen(passwd));
  21. bOK = (BOOL)InternetReadFile(hUrl, text, sizeof(text), &dwReadSize);
  22. printf(text);
  23. return 0;
  24. }
  25. ````
本文导读