jsoup+蚂蚁代理/阿布云代理

1 篇文章 0 订阅
final static String appkey = "xxxxx";//蚂蚁代理key
final static String secret = "xxxxxxxxxxxx";//蚂蚁代理密码
// 设置IP切换头
final static String ProxyHeadKey = "Proxy-Switch-Ip";
final static String ProxyHeadVal = "yes";

// 代理服务器
final static String ProxyHost = "s2.proxy.mayidaili.com";
final static Integer ProxyPort = 8123;


方式如下:


Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(
ProxyHost, ProxyPort));

Authenticator.setDefault(new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(appkey, secret.toCharArray());
}
});

Document doc = Jsoup
.connect(url)
.timeout(10000)
.header(ProxyHeadKey, ProxyHeadVal)
.header("Proxy-Authorization", this.getAuthHeader())
.headers(msp)
.validateTLSCertificates(false)
.userAgent(
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0")
.proxy(proxy).get();


/**
* 获取蚂蚁代理授权头部
* @return
*/
public String getAuthHeader() {
// 创建参数表
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("app_key", appkey);
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
format.setTimeZone(TimeZone.getTimeZone("GMT+8"));// 使用中国时间,以免时区不同导致认证错误
paramMap.put("timestamp", format.format(new Date()));

// 对参数名进行排序
String[] keyArray = paramMap.keySet().toArray(new String[0]);
Arrays.sort(keyArray);

// 拼接有序的参数名-值串
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(secret);
for (String key : keyArray) {
stringBuilder.append(key).append(paramMap.get(key));
}

stringBuilder.append(secret);
String codes = stringBuilder.toString();

// MD5编码并转为大写, 这里使用的是Apache codec
String sign = org.apache.commons.codec.digest.DigestUtils.md5Hex(codes)
.toUpperCase();

paramMap.put("sign", sign);

// 拼装请求头Proxy-Authorization的值,这里使用 guava 进行map的拼接
String authHeader = "MYH-AUTH-MD5 "
+ Joiner.on('&').withKeyValueSeparator("=").join(paramMap);
return authHeader;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值