米扑代理示例(mimvp-proxy-demo)
米扑代理示例,包含Python、Java、PHP、C#、Go、Perl、Ruby、Shell、NodeJS、PhantomJS、Groovy、Delphi、易语言等十多种编程语言或脚本,通过大量的可运行实例,详细讲解了使用代理IP的正确方法,方便网页爬取、数据采集、自动化测试等领域。
$proxy_socks4 = "socks4://94.158.70.129:1080";
$proxy_socks5 = "socks5://173.230.95.147:45454";
// curl
proxy_curl($proxy_socks4, $mimvp_url); // socks4
proxy_curl($proxy_socks5, $mimvp_url); // socks5
function proxy_curl($proxy_uri, $mimvp_url) {
$proxy= explode('://', $proxy_uri)[1]; // ip:port
echo "proxy_uri : $proxy_uri; key : $key, proxy : $proxy ";
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $mimvp_url);
curl_setopt ( $ch, CURLOPT_HTTPPROXYTUNNEL, false );
curl_setopt ( $ch, CURLOPT_PROXY, $proxy );
}
curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, 2 );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
}
elseif ($key == "socks4") {
curl_setopt ( $ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4 ); // socks4
}
elseif ($key == "socks5") {
curl_setopt ( $ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5 ); // socks5
}
else {
curl_setopt ( $ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP );
}
curl_setopt ( $ch, CURLOPT_TIMEOUT, 60 );
curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 60 );
curl_setopt ( $ch, CURLOPT_HEADER, false );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true ); // 返回网页内容
$result = curl_exec ( $ch );
}
proxy_socks4 = {'socks4': '218.58.52.158:1088'}
proxy_socks5 = {'socks5': '68.234.190.150:45454'}
# urllib2.URLError: [urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)]
handler = urllib2.ProxyHandler(proxy)
opener = urllib2.build_opener(handler)
f = opener.open(mimvp_url, timeout=30)
content = f.read()
print content
print len(content)
f.close()
opener.close()
opener = urllib.FancyURLopener(proxy)
content = f.read()
print content
print len(content)
f.close()
opener.close()
# socks4
def test_socks4(socks4, mimvp_url):
socks4_ip = socks4.split(":")[0]
socks4_port = int(socks4.split(":")[1])
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS4, socks4_ip, socks4_port)
socket.socket = socks.socksocket
content = urllib2.urlopen(mimvp_url, timeout=30).read()
print content
print len(content)
# socks5
def test_socks5(socks5, mimvp_url):
socks5_ip = socks5.split(":")[0]
socks5_port = int(socks5.split(":")[1])
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, socks5_ip, socks5_port)
socket.socket = socks.socksocket
content = urllib2.urlopen(mimvp_url, timeout=30).read()
print content
print len(content)
if __name__ == "__main__":
# socks4
test_socks4(proxy_socks4['socks4'], mimvp_url)
# socks5
test_socks5(proxy_socks5['socks5'], mimvp_url)
@SuppressWarnings({ "serial" })
public static HashMap proxyMap = new HashMap() {
{
put("socks4", "113.7.118.112:2346");
put("socks5", "61.135.155.82:1080");
}
};
private static int proxy_property(String proxyType, String proxyStr) {
int dataLen = 0;
String proxy_ip = proxyStr.split(":")[0];
String proxy_port = proxyStr.split(":")[1];
Properties prop = System.getProperties();
}
}
// socks
if(proxyType.equals("socks4") || proxyType.equals("socks5")){
prop.setProperty("socksProxySet", "true");
prop.setProperty("socksProxyHost", proxy_ip);
prop.setProperty("socksProxyPort", proxy_port);
}
// ftp
if(proxyType.equals("ftp")){
prop.setProperty("ftp.proxyHost", proxy_ip);
prop.setProperty("ftp.proxyPort", proxy_port);
prop.setProperty("ftp.nonProxyHosts", "localhost|192.168.0.*");
}
// // auth 设置登录代理服务器的用户名和密码
// Authenticator.setDefault(new MyAuthenticator("user", "pwd"));
try{
URLConnection conn = url.openConnection();
conn.setConnectTimeout(30 * 1000);
InputStream in = conn.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
char[] ch = new char[1024];
int len = 0;
String data = "";
while((len = reader.read(ch)) > 0) {
String newData = new String(ch, 0, len);
data += newData;
}
System.out.println("data : " + data);
dataLen = data.length();
} catch(Exception e) {
e.printStackTrace();
}
return dataLen;
}
static class MyAuthenticator extends Authenticator {
private String user = "";
private String password = "";
public MyAuthenticator(String user, String password) {
this.user = user;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password.toCharArray());
}
}
#!/bin/bash
#
#
# 米扑代理示例:
#
# 米扑代理购买:
#
# 2015-11-09
# curl 支持socks
{'socks4': '101.255.17.145:1080'}
{'socks5': '82.164.233.227:45454'}
# wget 不支持socks
################### wget配置文件设置代理 ###################
vim ~/.wgetrc
use_proxy = on
wait = 30
################### 设置临时局部代理 ###################
# proxy no auth
# proxy auth
# 取消设置
################### 设置系统全局代理 ###################
# 修改 /etc/profile,保存并重启服务器
sudo vim /etc/profile # 所有人有效
或
sudo vim ~/.bashrc # 所有人有效
或
vim ~/.bash_profile # 个人有效
# proxy no auth
# proxy auth
source /etc/profile
或
source ~/.bashrc
或
source ~/.bash_profile
sudo reboot
'
' 米扑代理示例:
'
' 米扑代理购买:
'
' 2017-07-28
'
' 易语言的安装与开发,请参考米扑博客:
'
' 易语言的网络编程和代理示例,请参考米扑博客,附有源代码:
' 变量声明(表格)
.局部变量 代理地址, 文本型
.局部变量 目标网址, 文本型
.局部变量 代理用户名, 文本型
.局部变量 代理密码, 文本型
' 获取目标网址
.如果 (目标网址编辑框.内容 = “”)
.否则
目标网址 = 目标网址编辑框.内容
' 获取代理地址
.如果 (代理服务器编辑框.内容 = “”)
代理地址 = “139.59.99.113:8080”
.否则
代理地址 = 代理服务器编辑框.内容
.如果结束
输出调试文本 (“代理地址: ” + 代理地址)
' 设置代理方法1
超文本浏览框.跳转 (目标网址编辑框.内容, , )
' 设置代理方法2
输出调试文本 (网页_访问S (目标网址, , , , , , , , , , 代理地址, , ))
' 设置代理方式3(用户名 + 密码)
输出调试文本 (网页_访问S (目标网址, , , , , , , , , , 代理地址, 代理用户名, 代理密码))