爬虫买个代理ip(爬虫为啥需要大量的ip)
本文只简单介绍代理ip的获取和使用,不介绍java爬虫。
如果你有时间,让我们打开一个关于爬行动物的单独系列。
代理ip介绍
为了防止IP被网站屏蔽,无法继续抓取页面,爬虫程序需要不断改变IP地址等信息,将自己伪装成真实用户。
知识产权代理的分类:
注:代理ip的机密信息来自互联网。
代理IP有透明代理、匿名代理、混淆代理和高低代理等几种。
1.透明代理。
远程ADDR=代理IP
HTTP_VIA=代理IP
HTTP_X_FORWARDED_FOR=您的IP
虽然透明代理可以直接“隐藏”你的IP地址,但你仍然可以从HTTP_X_FORWARDED_FOR中找出你是谁。
2.匿名代理
远程ADDR=代理IP
HTTP_VIA=代理IP
HTTP_X_FORWARDED_FOR=代理IP
匿名代理比透明代理好一点:别人只能知道你用了代理,却不能知道你是谁。
3.令人不安的特工。
远程ADDR=代理IP
HTTP_VIA=代理IP
HTTP _ X _ FORWARDED _ FOR=随机IP地址
如上所述,就像匿名代理一样,如果你使用了混淆代理,别人仍然可以知道你在使用代理,但你会得到一个假的IP地址,这使得伪装更加现实。
4.高匿名代理(精英代理或高匿名代理)
远程ADDR=代理IP
HTTP_VIA=未确定
HTTP_X_FORWARDED_FOR=未确定
可见,高尼的代理人让别人不可能发现你在使用代理人,所以是最好的选择。
第二,获取代理ip
你可以写一个小爬虫来抓取这些免费ip代理网站上的代理IP和端口号。
注意:可利用率真的很低,需要重新筛选后才能使用。
分享几个免费的IP代理网站:
1、西刺特工
http://www.xicidaili.com/
2、66自由代理网络
http://www.66ip.cn/
3.快速代理
http://www.kuaidaili.com/free/
4、大叔站(不容易用,端口号是图片,不容易爬。但据说IP质量还不错)
http://ip.zdaye.com/
免费的代理ip网站有很多,包括国内的和国外的,但是因为是免费的,可用率太低,所以获取后不可避免的要进行筛选。
Ip代理可以从各种网站抓取并放入数据库。
当一个ip地址被阻止时(检查响应中的状态码),一个新的ip使用被从数据库中取出。
同时,应定期检查数据库中的ip代理的可用性,不可用的ip代理应及时删除。
确定ip代理是否可用:
使用ip代理访问网站,如百度主页。如果响应中的状态码为200,则表示访问可以正常,则ip代理可用,否则不可用。
第三,在java爬虫中使用代理ip
使用代理IP完成实施代码:
package cn . mwx u16 . daili _ IP;
导入Java . io . ioexception;
import org . Apache . http . Httpentity;
import org . Apache . http . Httphost;
导入org . Apache . http . client . config . Requestconfig;
import org . Apache . http . client . methods . closeablehttpresponse;
import org . Apache . http . client . methods . HttpGet;
import org . Apache . http . impl . client . closeablehttpclient;
import org . Apache . http . impl . client . httpclients;
import org . Apache . http . util . entityutils;
/*
*演示1
*使用代理IP
*/
公共类Demo1 {
公共静态void main(字符串[]参数)引发异常(
CloseableHttpClient httpClient=httpclients . create default();//创建一个HTTPClient对象
HttpGet HttpGet=new HttpGet(' http://www . Baidu.com ';);//创建HTTP的获取请求实例
//=======设置代理IP
HttpHost代理=new HttpHost('58.243.207.87 ',9858);//设置代理IP的地址和端口号
request config=request config . custom()。设置代理。build();
http get . Setconfig(config);
//===================
//设置请求头信息模拟浏览器,在这里使用火狐浏览器的User-Agent。
httpget.setHeader('User-Agent ',' Mozilla/5.0(Windows NT 6.1;Win64x64RV :55.0)Gecko/20100101 Firefox/55.0’;
CloseableHttpResponse响应=null//创建CloseableHttpResponse对象
response=HttpClient . execute(Http get);
HttpEntity实体=响应。getentity();//获取返回实体(即返回的网页源码)
系统。出去。println(entityutils。ToString(实体,' utf-8 ');//输出网页源码
closeAll(响应,httpClient);//释放资源
}
//关闭所有资源
公共静态void closeAll(CloseableHttpResponse响应,CloseableHttpClient(httpClient){ 0
//关闭资源
尝试{
回应。close();//关闭反应
} catch (IOException e) { //IO异常
e。print stack trace();
}
尝试{
httpclient。close();//关闭httpClient
} catch (IOException e) { //IO异常
e。print stack trace();
}
}
}
————3354——end ——354