爬虫技术之新的代理模式的使用
最近接了一个私活需要爬取航空信息数据,但是这个网站有ip屏蔽。所以我需要在java中实现ip自动切换,才能够完成爬取任务。之前也买过一些便宜的代理效果也不咋样,也测试过几家。都是通过api接口进行ip的调用,可能是之前代码没有调整好,导致测试没有成功。(后面有机会再测试)。最近听说流行动态转发代理,想试试,在网上解了一家代理商叫亿牛云,他们刚好有提供所以就测试了下,这边就分享下测试的流程,他们官网有直接给出对应的语言的代码示例我选择的是java JSoup,以下就是代码示例的分享。
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class Demo
{
// 代理验证信息
final static String ProxyUser = "16KNBIQV";
final static String ProxyPass = "245789";
// 代理服务器(产品官网 www.16yun.cn)
final static String ProxyHost = "t.16yun.cn";
final static Integer ProxyPort = 31111;
// 设置IP切换头
final static String ProxyHeadKey = "Proxy-Tunnel";
public static String getUrlProxyContent(String url)
{
Authenticator.setDefault(new Authenticator() {
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(ProxyUser, ProxyPass.toCharArray());
}
});
// 设置Proxy-Tunnel
Random random = new Random();
int tunnel = random.nextInt(10000);
String ProxyHeadVal = String.valueOf(tunnel);
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ProxyHost, ProxyPort));
try
{
// 处理异常、其他参数
Document doc = Jsoup.connect(url).timeout(3000).header(ProxyHeadKey, ProxyHeadVal).proxy(proxy).get();
if(doc != null) {
System.out.println(doc.body().html());
}
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}
public static void main(String[] args) throws Exception
{
// 要访问的目标页面
String targetUrl = "www.csair.com";
getUrlProxyContent(targetUrl);
}
我是直接复制他们的demo进行测试的,可以直接运行,还是简单方便的的。但是复制我的或他们官网的额示例是不能直接参运行的,因为里面的代理参数需要他们提供才可以,不然运行就会报错的,这个我只是先测试看效果,效果不错会继续分享后续的使用情况的。
爬虫技术之新的代理模式的使用
xiaotaomi
会员积分:6520
最近接了一个私活需要爬取航空信息数据,但是这个网站有ip屏蔽。所以我需要在java中实现ip自动切换,才能够完成爬取任务。之前也买过一些便宜的代理效果也不咋样,也测试过几家。都是通过api接口进行ip的调用,可能是之前代码没有调整好,导致测试没有成功。(后面有机会再测试)。最近听说流行动态转发代理,想试试,在网上解了一家代理商叫亿牛云,他们刚好有提供所以就测试了下,这边就分享下测试的流程,他们官网有直接给出对应的语言的代码示例我选择的是java JSoup,以下就是代码示例的分享。
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class Demo
{
// 代理验证信息
final static String ProxyUser = "16KNBIQV";
final static String ProxyPass = "245789";
// 代理服务器(产品官网 www.16yun.cn)
final static String ProxyHost = "t.16yun.cn";
final static Integer ProxyPort = 31111;
// 设置IP切换头
final static String ProxyHeadKey = "Proxy-Tunnel";
public static String getUrlProxyContent(String url)
{
Authenticator.setDefault(new Authenticator() {
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(ProxyUser, ProxyPass.toCharArray());
}
});
// 设置Proxy-Tunnel
Random random = new Random();
int tunnel = random.nextInt(10000);
String ProxyHeadVal = String.valueOf(tunnel);
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ProxyHost, ProxyPort));
try
{
// 处理异常、其他参数
Document doc = Jsoup.connect(url).timeout(3000).header(ProxyHeadKey, ProxyHeadVal).proxy(proxy).get();
if(doc != null) {
System.out.println(doc.body().html());
}
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}
public static void main(String[] args) throws Exception
{
// 要访问的目标页面
String targetUrl = "www.csair.com";
getUrlProxyContent(targetUrl);
}
我是直接复制他们的demo进行测试的,可以直接运行,还是简单方便的的。但是复制我的或他们官网的额示例是不能直接参运行的,因为里面的代理参数需要他们提供才可以,不然运行就会报错的,这个我只是先测试看效果,效果不错会继续分享后续的使用情况的。
20-08-19 17:34
697
0
回复
暂无评论