如何使用带有用户名密码认证的HTTP(S)代理
##### 1.推荐使用环境
当您的终端IP不固定(如铁通、鹏博士等),或者需要多机器同时使用代理IP时;
##### 2.用户帐密
用户名是AuthKey,密码AuthPwd,用户名和密码都可以在用户中心的业务列表中查看;

##### 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中使用代理
```python
import urllib2
#设置你的HTTP代理包含用户名密码
proxy='账号:密码@ip:port'
#你要访问的网址
url = 'http://www.ip138.com/'
opener = urllib2.build_opener()
if url.lower().startswith('https://'):
opener.add_handler(urllib2.ProxyHandler({'https' : proxy}))
else:
opener.add_handler(urllib2.ProxyHandler({'http' : proxy}))
request = urllib2.Request(url)
response = opener.open(request)
content = response.read()
```
(3)在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;
}
```
(4)在C#中使用代理
```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);
}
}
}
```
(5)在 VC Win32 Wininet 库中使用代理
```
#include
#include
#include
#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;
}
```
IP如何申请和释放
##### 1.IP的申请
第一步,进入【调试工具】后,选择接口方法为【获取IP资源】;
第二步,在Key的输入框输入已购买的代理IP业务AuthKey值;
IP数量、地区、运营商等都可选择,填写完成后,点击测试按钮即可进行申请,申请成功返回结果为如下图所示;

同时也可使用【提取工具】,选择已购买可用的AuthKey值,根据实际需求提取对应的IP,IP最终以文本形式或API形式输出,如下图所示;

##### 2.资源释放
第一步,进入【调试工具】后,选择接口方法为【资源释放】;
第二步,在Key的输入框选择已购买的代理IP业务AuthKey;
如需要释放一个或多个IP,可在IP的输入框中指定IP地址(不加端口号);也可以填写TaskID,可以释放某次申请任务的多个IP。
填写完成后,点击测试按钮即可进行释放,释放成功返回结果为如下图所示。

注意:
IP和TaskID 必须填写其中一项才能进行释放,如果不指定IP,在其中一个输入框中填*,即释放所有已申请的IP。
使用XShell工具进行SSH连接Linux系统服务器
1.双击运行程序,打开Xshell主界面。

2.点击“新建”,分别输入主机ip跟远程端口号,然后点击“确定”。


3.输入登录的用户名,点击“确定”,然后在输入机器的登录密码,最后点击“确定”进行登录连接。
说明:用户名一般默认是“root”


4.出现下面的界面即成功远程访问Linux服务器。

Ubuntu使用sshpass免交互ssh远程执行命令
1.更新软件源
apt-get update -y
2.安装sshpass
apt-get install sshpass -y
3.验证是否安装成功,有以下输出即安装成功
sshpass

4.远程连接指定ssh的端口
sshpass -p {密码} ssh -o StrictHostKeyChecking=no -p {端口} {用户名}@{主机IP}
添加-o StrictHostKeyChecking=no表示远程连接时不提示是否输入yes/no
sshpass -p XXXXXXXXX ssh -o StrictHostKeyChecking=no -p 22 root@45.X.X.4

5.远程连接主机并执行命令
sshpass -p XXXXXXXXX ssh -o StrictHostKeyChecking=no -p 22 root@45.X.X.4 'w'
w 为执行的命令

Windows10远程桌面报错 0x1104如何解决
当Windows 10远程桌面连接时,报下图错误时。

1.先核实您所使用的远程工具是否对应着您远程机器的系统,远程桌面连接无法远程Linux系统机器,在核对远程地址是否正常。
2.在远程工具以及远程地址都确认无误时,请查看防火墙是否关闭,若开启则需要关闭防火墙在进行远程连接或者对远程端口进行放行。
以上核对完成时,测试远程正常
