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;
}
分享到:
相关推荐
在Android开发中,标题"图片列表RecyclerView+ListView+WebView+JzvdStd/JZPlayer+Jsoup+Glide"所提及的技术栈是构建一个功能丰富的移动应用的关键组件。以下是这些技术的具体介绍和它们如何协同工作的详细说明: 1...
【标题】基于SpringBoot+MyBatisPlus+Jsoup+MySQL开发Web小说网站 在现代互联网环境中,构建一个Web小说网站已经成为许多开发者和创业者的首选项目。本项目使用了Java技术栈,具体包括SpringBoot、MyBatisPlus、...
**JSoup + HttpClient 简单爬虫** 在信息技术领域,数据抓取,或称“爬虫”,是一种自动化获取网页信息的技术。JavaScript Object Notation (JSON) Soup 和 HttpClient 是两个在Java开发中常用于实现爬虫功能的库。...
本文主要讲述如何利用Java编程语言中的Jsoup库和HttpClient工具包来获取和解析动态生成的数据,特别是那些通过JavaScript动态加载的数据。 ### Java爬虫基础 Java爬虫是指使用Java语言编写的一类程序,这些程序...
Jsoup+httpclient模拟登陆和抓取页面.pdf
springboot+mybatisplus+jsoup+mysql springboot【小说阅读网站】,多线程抓取小说数据(单本或者批量),持久化到MySQL数据库,能定时跟源站数据同步=小说定时更新。通过jsoup采集数据到mysql数据,redis作为缓存...
**JSoup与HttpClient详解** JSoup与HttpClient是Java开发中常用的两个库,分别用于处理HTML文档解析和网络请求。在本教程中,我们将深入探讨这两个工具,并了解如何结合使用它们来实现对视频网站的爬虫功能。 **1....
本篇文章以"一篇文章精通系列-案例开发-巨细"为主题,详细介绍了如何使用HttpClient5、jsoup、WebMagic以及spider-flow这四个关键工具来构建一个强大的Java爬虫系统。以下是对这些工具和技术的深入解析。 首先,...
在本文中,我们将深入探讨如何使用Jsoup和HtmlUnit库来爬取并处理网页上的外币汇率信息。这两个工具是Java编程语言中的强大选择,用于网络数据抓取和页面解析。 首先,Jsoup是一个用于处理实际世界HTML的Java库。它...
Spring Boot + Java + Jsoup 爬虫是一个常见的技术组合,用于构建高效、简洁的网络爬虫项目。本文将深入探讨这些技术如何协同工作,以及如何利用它们来抓取和处理网页上的图片资源。 首先,Spring Boot 是一个由...
总的来说,动态爬虫jsoup+jdic实现是一种实用的网络爬虫技术,它帮助我们克服了静态HTML解析无法处理动态内容的问题。通过熟练运用这两个工具,开发者可以在Java环境中高效地抓取和处理各种网页信息。
Jsoup+httpclient 模拟登录和抓取知识点: 1. Jsoup库使用介绍: - Jsoup是一个Java的HTML解析器,能够直接解析HTML文档,提供类似于jQuery的操作方法。 - 主要功能包括从URL、文件或字符串中解析HTML,使用DOM或...
**JSoup库** JSoup是一个Java库,设计用于处理实际世界中的HTML。它提供了一种易于使用的API,用于抓取和解析数据,提取和修改数据,就像DOM、CSS和jQuery一样。JSoup能够理解HTML的不完美之处,使得在处理网页内容...
本示例项目"Lucene4.8+IKAnalyzer+SpringMVC4+Jsoup+Quartz"为我们提供了一个强大的智能搜索引擎搭建框架,它整合了多项关键技术,旨在帮助开发者高效地实现网页抓取、内容分析和定时任务等功能。 首先,Lucene是...
资源名字:基于java+Jsoup+HttpClient的网络爬虫技术的网络新闻分析系统设计与实现(源码+文档)_MySQL_网络爬虫_数据挖掘.zip 资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百...
**Java基于Jsoup+MongoDB的简单爬虫入门程序** 在现代互联网环境中,数据的获取与分析变得至关重要,而爬虫技术就是实现这一目标的重要工具。本教程将介绍如何使用Java编程语言,结合Jsoup库进行网页抓取,并利用...
本项目结合了RecyclerView、ListView、WebView、JzvdStdJZPlayer、Jsoup和Glide等组件,为实现一个功能丰富的影视列表提供了示例。下面我们将深入探讨这些技术及其在项目中的应用。 首先,RecyclerView是Android ...
3. 考虑到网站反爬策略,适当使用延时和代理IP,避免被封禁。 4. 理解HTML结构,以便正确解析复杂布局的网页。 5. 在遇到错误或异常时,利用类似firebug的调试工具进行问题定位。 总结来说,jsoup和jdid的结合使用...
1. **设置Jsoup**:导入Jsoup库,建立与目标网页的连接,使用`Jsoup.connect(url).get()`获取网页内容,然后通过CSS选择器找到投票按钮或所需元素。 2. **解析HTML**:使用`select()`方法选择特定的HTML元素,例如`...