1、第一步:代理的运用。代理就是不用自己的IP进行爬取,这样网站纪录的就不是你的地址。代码如下:
InetSocketAddress address = new InetSocketAddress("ip", 8080);
Proxy proxy = new Proxy(Proxy.Type.SOCKS, address);
Document doc = Jsoup.connect("")
.proxy(proxy)
.get();
new一个代理对象即可

2、第二步:添加头部。在很多网站的请求过程中都有头部,比如浏览器的头部就包含
user-agent:
Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1
这样的东西,jsoup也可以设置,代码如下:
header.put("user-agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac " +
"OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/" +
"14E304 Safari/602.1");
Document doc = Jsoup.connect("")
.headers(header)
.get();

3、第三步:自定义头部。很多网站都有自定义头部,比如最常见的token,都是封在头部中的。代码如下:
Map<String, String> header = new HashMap<>();
header.put("token", "token字符串");
Document doc = Jsoup.connect("")
.headers(header)
.get();

4、第四步:token的查看。很多人可能不知道token在哪里查看。打开网页按F12打开控制台,找到network,点击请求url,如图:

5、第五步:post和get传参。参数传递时必须的,比如搜索,按照特定的条件进行特定的结果。jsoup的传参和header类似,代码如下:
Map<String, String> data = new HashMap<>();
data.put("key", "参数1");
data.put("key2", "参数z");
Document doc = Jsoup.connect("")
.data(data)
.get();

6、第六步:同时合并以上代码:
InetSocketAddress address = new InetSocketAddress("ip", 8080);
Proxy proxy = new Proxy(Proxy.Type.SOCKS, address);
Map<String, String> header = new HashMap<>();
header.put("token", "token字符串");
Map<String, String> data = new HashMap<>();
data.put("key", "参数1");
data.put("key2", "参数z");
Document doc = Jsoup.connect("")
.proxy(proxy)
.headers(header)
.data(data)
.get();
