代理服务器的基本了解
在一般情况下,使用浏览器可以直接连接internet站点获取网络信息,
而代理服务器(Proxy Server)是网络上提供转接功能的服务器。
代理服务器是介于客户端和Web服务器之间至的另一台服务器。
基于代理服务器,浏览器不再直接从Web服务器获取数据,
而是向代理服务器发出情求,信号会先送发到代理服务器,
由代理服务器取回浏览器所需要的信息。可以将代理简单理解为中介.
在网络爬虫中,使用代理服务器访问网页内容;能高度隐藏爬虫真实IP地址,
从而防止网络爬虫被服务器封锁。另外,普通网络爬虫使用固定IР地址请求时
往往需要没置随机休息时间,而通过代理联务器却不需要,从而提高了数据采集的效率。
三前,代理股务器可以来源于提供免费代理服务的一些网站或接口网站,
但这些免费代理IP地址的稳定性较差,另外,也可通过付费的方式获取商业级代理,
其提供的代理IP地址可用率较高,稳定性较强。
记得设置这两个地方
本代码使用有局限性:
局限性为:
授权模式 要使用 终端IP授权
然后生成提取链接页面 返回类型设置必须使用Text文本形式的返回类型
import net.sf.json.JSONObject;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
import java.lang.reflect.Array;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.util.*;
public class Jsoupdemo6 {
//生成的ip提取链接,记得换成自己的
private final static String GET_IP_URL = "http://www.zdopen.com/PrivateProxy/GetIP/?api=202207061724038356&akey=3d6e457db3f4b25c&count=5&adr=%E6%B5%99%E6%B1%9F%2C%E6%B2%B3%E5%8D%97%2C%E5%8C%97%E4%BA%AC&fitter=2×pan=6&type=1";
public static void main(String[] args) {
Document doc = null;
try {
doc = Jsoup.connect(GET_IP_URL).get();
} catch (IOException e) {
throw new RuntimeException(e);
}
String text = doc.text();
// System.out.println(text);
String[] s = text.split(" ");
String[] arrip=new String[s.length];
String[] arrport=new String[s.length];
for (int i=0;i<s.length;i++) {
String s1 = s[i];
arrip[i]= s1.split(":")[0];
arrport[i]=s1.split(":")[1];
}
Map<String, String> ipmap = new HashMap<>();
Map<String, String> portmap = new HashMap<>();
for (int i = 0; i < arrip.length; i++) {
ipmap.put("ip"+i,arrip[i]);
portmap.put("port"+i,arrport[i]);
}
/*
* 便捷输出查看
*
* */
// for (int i = 0; i < portmap.size(); i++) {
// System.out.println(portmap.get("port"+i));
// }
for (int i = 0; i < ipmap.size(); i++) {
// System.out.println(ipmap.get("ip"+i));
// System.out.println(portmap.get("port"+i));
String ip =ipmap.get("ip"+i);
String port=portmap.get("port"+i) ;
// System.out.println(ip+" "+port);
checkIp a = new checkIp(ip, Integer.valueOf(port));
try {
a.lianjie();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
static class checkIp{
private String ip ;
private int port;
public checkIp(String ip, int port) {
this.ip = ip;
this.port = port;
}
public void lianjie() throws IOException {
//要请求的网址,记得换成自己的
Connection connection= Jsoup.connect("https://www.baidu.com");
/*
* 这个地方的proxy 参数第一个是String 类型 用于传入 代理Ip地址 第二个参数是int类型用于传入 Ip端口号
* */
Connection.Response execute = connection.method(Connection.Method.GET).timeout(20*1000).proxy(ip, port).execute();
int i = execute.statusCode();
System.out.println("响应状态码为:"+i);
}
}
}
我自己使用的代理ip是 zhandaye 拼音自己猜一下
返回类型是Json方式 ,授权方式为账号密码的写法链接:博客链接跳转