JAVA中伪造referer来获取网页数据

在java中获取一个网站的HTML内容可以通过HttpURLConnection来获取.我们在HttpURLConnection中可以设置referer来伪造referer,轻松绕过这类防采集的网站

HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon;)");
conn.setRequestProperty("Accept-Encoding", "gzip");
conn.setRequestProperty("referer", "http://www.iteye.com/topic/420");
conn.setRequestProperty("cookie", "http://www.iteye.com");
InputStream inputStream = conn.getInputStream();
//保存inputstream中的东西就OK了

其实原理非常简单就是设置下请求头,通过设置user-agent让服务器识别我们的身份,上面的例子中,我们就告诉浏览器我是用的maxthon遨游浏览器.通过设置useragent大部分的防采集的网站可以通过了,第二中比较严格的防采集的网站是通过请求头的referer和cookie来判断的.

使用jetty的HttpClient的可以通过ContentExchange的addRequestHeader来设置请求头

contentExchange.addRequestHeader("User-Agent",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon;)");
contentExchange.addRequestHeader("Accept-Encoding", "gzip");
contentExchange.addRequestHeader("referer", "http://www.iteye.com/topic/420");
contentExchange.addRequestHeader("cookie", "data");
contentExchange.setMethod("GET");

  1. da shang
    donate-alipay
               donate-weixin weixinpay

发表评论↓↓