如何测试socks5 和http 代理IP 的可用性
在使用代理IP之前,我们经常会先测试下代理IP是否可用,常见的方法有:浏览器设置代理IP测试访问网站,通过QQ登录界面测试,自己写程序代码测试等等,其实还有一种很常见的测试方法,也是很多朋友们喜欢使用的,那就是用Curl命令来测试代理IP是否可用。
测试socks5代理IP的命令:
curl --socks5 168.168.168.168:66666 https://www.baidu.com/
curl --socks5 key:pwd@ip:port https://www.baidu.com
测试http代理IP的命令:
curl --connect-timeout 2 -x 168.168.168.168:88888 https://www.baidu.com/
curl -x key:pwd@ip:port https://www.baidu.com
| 参数 | 用法说明 |
| ------------ | ------------ |
| -x host:port
-x [protocol://[user:pwd@]host[:port]
--proxy [protocol://[user:pwd@]host[:port] | 使用HTTP代理访问;如果未指定端口,默认使用8080端口;
protocol默认为http_proxy,其他可能的值包括:
http_proxy、HTTPS_PROXY、socks4、socks4a、socks5;
如:
--proxy 8.8.8.8:8080;-x "http_proxy://user:password@baidu.com:80" |
| --socks4
--socks4a
--socks5 | 使用SOCKS4代理;
使用SOCKS4A代理;
使用SOCKS5代理;
此参数会覆盖“-x”参数; |
| --proxy-anyauth
--proxy-basic
--proxy-diges
--proxy-negotiate
--proxy-ntlm | 代理认证方式,参考:
--anyauth
--basic
--diges
--negotiate
--ntlm |
| -U--proxy-user
--proxy-user | 设置代理的用户名和密码; |
注意点:
1.HTTP代理IP和socks5代理IP的命令是不一样的,很多朋友测试socks5代理IP,结果写成了测试HTTP代理IP的命令,结果自然不行;
2.测试前需要知道自己的代理IP是什么授权验证模式,青果云代理IP支持两种授权验证模式,分别是“白名单IP授权”和“用户名 密码”授权,如果是“白名单IP授权”,请确保已经绑定了使用代理的终端的上网IP;如果是“用户名 密码”授权,在curl的时候也需要设置代理的用户名和密码。
如何使用带有用户名密码认证的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 为执行的命令
