前言
最近没事,做了一个网站,但是很久也没有流量,比较郁闷,闲来无事,研究了一下如何提升百度流量和关键词排名的方法,结果发现了一个叫做百度快排的方法,可以快速提升百度的流量和关键词排名,作为资深的爬虫专家,准备使用Java HttpClient模拟百度搜索和点击,实现百度SEO优化。
百度快排, 大概就是提升关键词(一般只针对排名在百度前50的关键词)从百度产生的导流量,跳出率,访问IP, UV等数据,快速提升百度排名的方法,因为纯属模拟人工点击,和正常访问没有差异,一般不会被百度发现和惩罚,是比较快的提升百度排名的方法,好了,多的不说了,下面讲讲研究的过程和结果。
模拟访问网站页面
因为我的网站添加了百度统计,模拟的访问需要被百度发现,那么肯定是需要被百度统计数据发现,第一个难点,就是如何模拟手动点击,并且被百度统计统计到。
首先,抓取网站请求截图,可以看到,每次请求页面后,会请求一个百度统计的链接,把数据发送给百度统计:
链接的格式如https://hm.baidu.com/hm.gif,虽然请求的是.gif的格式,但其实是一个发送点击数据给百度统计的一个链接,所以要实现模拟人工点击,就主要是要解决正确成功请求https://hm.baidu.com/hm.gif,并且得到正确的结果,好的,既然原理是这样,那么下一步,就开始实现用代码模拟,看看效果。
选择使用Java HttpClient4.X工具来模拟点击,因为 HttpClient4.X的工具之后,每次请求页面的缓存会自动被HttpClient自动管理起来,不用再担心每次请求的Cookie的问题,是比较方便的,适合用来模拟人工点击,大概代码如下:
代码中的网站均为例子,仅供参考,请勿全部Copy。
try { g1 = new HttpGet("https://hm.baidu.com/hm.gif?cc=1&ck=1&cl=24-bit&ds=1920x1080 &vl=916&ep=21673%2C9992&et=3&fl=27.0&ja=0&ln=zh-cn&lo=0<=1569131222 &rnd=1580626225&si=b0f234c2b33e76b44abc50061207a1a6 &su=http%3A%2F%2Fwww.tech58.net%2F&v=1.2.61&lv=3&sn=26748 &u=http%3A%2F%2Fwww.tech58.net%2Fdetail%2F2019-06-13%2Fxiaoerneiwai_20190613_9016.html") ; System.out.println(urls); g1.setHeader("Accept", "text/html, application/xhtml+xml, */*") ; g1.setHeader("Accept-Language", "zh-CN") ; g1.setHeader("Proxy-Connection", "Keep-Alive") ; g1.setHeader("User-Agent", webAgent) ; HttpResponse response2 = httpClient.execute(g1); String sg1 = EntityUtils.toString(response2.getEntity(),"utf-8") ; sg1 = StringRandomUtils.unicodeToString(sg1) ; g1 = new HttpGet("http://www.tech58.net/") ; System.out.println(urls); g1.setHeader("Accept", "text/html, application/xhtml+xml, */*") ; g1.setHeader("Accept-Language", "zh-CN") ; g1.setHeader("Proxy-Connection", "Keep-Alive") ; g1.setHeader("User-Agent", webAgent) ; response2 = httpClient.execute(g1); sg1 = EntityUtils.toString(response2.getEntity(),"utf-8") ; if(response2.getStatusLine().getStatusCode() == 200 ){ System.out.println("点击成功:"+urls); re = true; }else{ System.out.println("点击失败1"); errorinfo = "点击失败,无法访问网站,请换ip" ; } }catch(Exception e){ System.out.println(e.toString()); e.printStackTrace() ; }finally{ // if(httpClient !=null){ // httpClient.getConnectionManager().shutdown(); // } }
模拟的代码,基本是没多大问题了,可是测试了半天,也没有看到实际的效果,在百度统计中,没有看到模拟的效果,中间也修改了几次,加了几个链接,还是没有效果,原因是什么呢?
结果和原因
仔细想了想,百度也是一个比较成熟的网站了,如果那么容易就被人模拟点击,并且随便刷SEO,竞价等,那么百度早就倒闭了,百度肯定针对这方面做了一些屏蔽,在请求的过程中,返回了一些没有没注意到的参数附加到了缓存,或者Cookie中,也许是加密参数,返回后,浏览器中的JS中得到这些数据后,会进一步的处理和再解密加密,然后再发送到服务端进行校验,要全部实现这个模拟过程,肯定是很复杂的,没我开始想的那么简单。
当然,天下无难事,只怕有心人,只要是有迹可循的事情,总是会得到解决的方法的,再多次研究和尝试后,解决模拟点击的方法,还是被我找到了,敬请关注下一篇分享:HttpClient模拟百度搜索和点击,模拟百度SEO优化(自动翻页)(二): http://www.tech58.net/blog/articles/128.html。
注明: 代码中的网站均为例子,仅供参考,不一定真实有效额,请勿全部Copy。