Jsoup在简单防御XSS攻击和网络爬虫的简单应用
跨站攻击一直是web安全的一大问题,稍有不慎就会中招,各种防不胜防,今天在网上闲逛,发现一个第三方JAR不仅可以简单防御还可以爬取网页,所以写一篇小文以记之,也供有需要的人参考。
预防跨站攻击代码如下:
@Test public void testJsoup() { String unsafe = "<p><a href='http://example.com/' onclick='stealCookies()'>Link,<alert>0</alert></a></p>"; String safe = Jsoup.clean(unsafe, Whitelist.basic()); System.out.println(safe); }
其中 unsafe 就是用户提交的数据,其中包含 onclick 和 alert 可能会有害,需要过滤,而 Whitelist.basic() 则是过滤规则,safe 就是过滤后的安全数据。
在网络爬虫方面,曾听北京尚学堂马士兵老师讲过一次正则表达式的简单应用:抓取网页上的邮箱地址,有很多人记不住,但有了这个第三方工具,则轻松很多,他可以根据一个URL直接去抓取,省了不少事,猜测内部也是用正则实现的。
网络爬虫代码如下:
@Test public void testSpider() { String url = "http://www.rijiben.com/"; Document doc = null; try { doc = Jsoup.connect(url).get(); } catch (IOException e) { e.printStackTrace(); } if (null != doc) { Elements listrens = doc.getElementsByAttributeValue("class", "listren"); for (Element listren : listrens) { String text = listren.select("li").select("a").html(); System.out.println(text); } } else { System.err.println("网络出异常!"); } }
这是抓取日记本上面,历史上的今日的例子,老夫打算将来用到自己的微信公众号上面,怎么样,是不是很简单?
详细参考Jsoup的文档:http://www.open-open.com/jsoup/
2015-06-19 补充说明:
jsoup只能抓取普通方式生产的HTML页面,如果该页面是由ajax生成则不行,此时可以用HttpUnit,具体例子就不多说了
全文完,如果本文对您有所帮助,请花 1 秒钟帮忙点击一下广告,谢谢。
作 者: BridgeLi,https://www.bridgeli.cn
原文链接:http://www.bridgeli.cn/archives/81
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。
作 者: BridgeLi,https://www.bridgeli.cn
原文链接:http://www.bridgeli.cn/archives/81
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。
分类: Java
近期评论