1.HtmlUnit简要介绍

HtmlUnit是一款java的无界面浏览器程序库。它模仿HTML文档,并提供相应的API,容许您调用页面,填写表单,点击链接等操作,就像您在“失常”浏览器中做的一样。它有相当不错的JavaScript反对(还在不断改进),甚至可能解决相当简单的AJAX库,模仿Chrome,Firefox或Internet Explorer取决于应用的配置。它通常用于测试目标或从网站检索信息。
HtmlUnit不是一个通用的单元测试框架。它是一种模仿浏览器以用于测试目标的办法,并且旨在用于另一个测试框架(如JUnit或TestNG)中。无关简介,请参阅文档“HtmlUnit入门”。HtmlUnit用作不同的开源工具,如Canoo WebTest,JWebUnit,WebDriver,JSFUnit,WETATOR,Celerity,Spring MVC Test HtmlUnit作为底层的“浏览器”。
HtmlUnit最后由Gargoyle Software的Mike Bowler编写,并依据Apache 2许可证公布。从那时起,它曾经收到了许多来自其余开发商的奉献,明天也会失去他们的帮忙。

几年前在做一个购物网站的数据抓取工作中,偶尔的机会邂逅了HtmlUnit了。记得过后怎么也捉取不到页面上的价格数据,而httpfox也追踪不到价格数据的URL,正当我一愁莫展的时个,HtmlUnit呈现并帮我解决了问题。所以明天我要说声谢谢,也将HtmlUnit举荐给大家。

2.htmlUnit办法介绍

一、环境引入
因为我是在我本人的spring boot我的项目在引入的,所以我在pom文件中退出依赖就行了

; "复制代码")

<dependency>

    <groupId>net.sourceforge.htmlunit</groupId>    <artifactId>htmlunit</artifactId>    <version>2.41.0</version></dependency>

; "复制代码")

如果你只是爬取一个js不多的网站我倡议换上面这个依赖

; "复制代码")

    <dependency>        <groupId>net.sourceforge.htmlunit</groupId>        <artifactId>htmlunit</artifactId>        <version>2.23</version>    </dependency>

; "复制代码")

两者的区别我前面会讲,当然如果你不是用的maven工程(没有pom),能够去官网下载源代码库
二、应用
HtmlUnit应用起来非常简单,在应用时能够去官网手册查看语法事实上手册仅仅是入门解说,听我上面讲也够了;
1、创立客户端和配置客户端

; "复制代码")

         final String url ="https:****";//大家这能够填本人爬虫的地址    WebClient webClient = new WebClient(BrowserVersion.FIREFOX_68);//创立火狐浏览器 2.23版本是FIREFOX_45 new不写参数是默认浏览器    webClient.getOptions().setCssEnabled(false);//(屏蔽)css 因为css并不影响咱们抓取数据 反而影响网页渲染效率    webClient.getOptions().setThrowExceptionOnScriptError(false);//(屏蔽)异样    webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);//(屏蔽)日志    webClient.getOptions().setJavaScriptEnabled(true);//加载js脚本    webClient.getOptions().setTimeout(50000);//设置超时工夫    webClient.setAjaxController(new NicelyResynchronizingAjaxController());//设置ajax    HtmlPage htmlPage = webClient.getPage(url);//将客户端获取的树形构造转化为HtmlPage    Thread.sleep(10000);//主线程休眠10秒 让客户端有工夫执行js代码 也能够写成webClient.waitForBackgroundJavaScript(1000)

; "复制代码")

这里有个期待js执行,2.41.0很好兼容js多的状况,2.3却老是出问题,无奈刷新网页,2.41.0打印的也很具体,执行过程也比较慢,可能慢工出细活
这里差多就获取了近程地址页面,当初要做的就是解析dom节点 填写数据模仿点击等事件。如果你要将他打印输出 htmlPage.asText()输入htmlPage节点的文本 htmlPage.asXml()输入htmlPage节点的xml代码
2、节点的获取
在此环节倡议准备一点前端的常识
HtmlUnit给出两种节点获取形式
XPath查问:

; "复制代码")

final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net"); //get list of all divs

    final List<?> divs = htmlPage .getByXPath("//div"); //get div which has a 'name' attribute of 'John'    final HtmlDivision div = (HtmlDivision) htmlPage .getByXPath("//div[@name='John']").get(0);

; "复制代码")

css选择器:(我更加钟爱)

; "复制代码")

final DomNodeList<DomNode> divs = htmlPage .querySelectorAll("div"); for (DomNode div : divs) {

        ....    } //get div which has the id 'breadcrumbs'    final DomNode div = htmlPage .querySelector("div#breadcrumbs");

; "复制代码")

css给出汇合查问querySelectorAll和单个查问querySelector,如果你没有根底我给出以下例子你就明确:
htmlPage .querySelectorAll(“div”)返回htmlPage上面div标签汇合
htmlPage .querySelector(“div:nth-child(1)”)返回htmlPage上面div的第一个div
htmlPage .querySelector(".submit")返回htmlPage上面第一个class=submit的标签
htmlPage .querySelector("#submit")返回htmlPage上面第一个id=submit的标签
htmlPage .querySelector(“div.submit”)返回htmlPage上面第一个class为submit的div标签
htmlPage .querySelector(“div[id=‘submit’]”)返回htmlPage上面第一个id为submit的div标签
以上的列举办法置信曾经够用,不够的能够参阅css选择器
以下列举常见的html标签与HtmlUnit类的对应关系

; "复制代码")

div -> HtmlDivision
div汇合 -> DomNodeList<DomNode> fieldSet -> HtmlFieldSet
form -> HtmlForm
button -> HtmlButton
a -> HtmlAnchor <input type="xxx"> -> HtmlXxxInput
(<input type="text"> -> HtmlTextInput)
table -> HtmlTable
tr -> HtmlTableRow
td -> TableDataCell

; "复制代码")

有 setAttribute()办法节点的属性款式,setNodeValue()设置节点value值。是不是英语一下子就进步了?简直所有的标签能够找到与之对应的的类,上面看我的实战:这是一个在线填写温度的excel文档 如果拜访改地址,他会提醒登陆网页上有登录按钮,如果登录过网页上是没有登录按钮,咱们当初模仿关上主动登录框:

; "复制代码")

//这段代码是为了让网页的的某个按钮加载进去之后再执行上面的代码

    while (htmlPage.querySelector("#header-login-btn")==null) { synchronized (htmlPage) {            htmlPage.wait(1000);        }    }    HtmlButton login = htmlPage.querySelector("#header-login-btn");//获取到登陆按钮    if (login!=null){//如果网页上没这个按钮你还要去获取他只会失去一个空对象,所以咱们用空的形式能够判断网页上是否有这个按钮        System.out.println("-----未登录测试-----");        htmlPage=login.click();//模仿按钮点击后要将网页返回回来不便动静更新数据

System.out.println(htmlPage.asText());

        HtmlAnchor switcher_plogin = htmlPage.querySelector("a[id='switcher_plogin']"); if (switcher_plogin!=null) {//帐号密码登录            System.out.println("-----点击了帐号密码登陆-----");            htmlPage = switcher_plogin.click();            System.out.println(htmlPage.asText());        }    }    System.out.println(htmlPage.asText());    webClient.close();

; "复制代码")

爬虫最重要的步骤是咱们对网页先进行调试,有哪些按钮,要点击哪个,要给哪些设值。毕竟咱们要用代码安顿代码。
延申:如果你要对网页的数据获取或者文件进行下载,光靠HtmlUnit解析是不够的,举荐Jsoup库,是能够配合HtmlUnit应用的,比拟好用,这里就不列举。

三、实现一个小的demo

留神:htmlunit援用的jar包不全是会奇怪的报错
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...
https://github.com/threebb1/u...
https://www.github.com/threeb...
http://github.com/threebb1/ut...