万伦网络的云霸搜快排牛!

2019-11-06

这个每个词都有一个自己的值,同一个词的值在一个页面内是一样的,翻页之后可能会改变。wise:明智程度,10应该是最高的吧,这个似乎都是10,说明是用户自己滚动的bottom:参考top的解析tag:这个似乎都是固定值来的,大家可以多试试不同的词语。searchId:每次搜索都不同的,怀疑是16位搜索词的hash值baiduId:目前为空_rand:滚动到最后时的时间戳。毫秒数,保留3位小数以上就是百度记录用户滚动行为的相关信息。可以看到,要想通过发包的方式来解决这些数据的话还是比较有技术难度的。

1-191106195941625.jpg

需要破解js哈。这里就不展开了,我也不会。那么点击行为都记录了啥,当我们点击某一条搜索结果的时候,可以看到以下信息。(我点击了第五页的第一条结果)我们点击某条搜索结果的时候,一共触发了3条请求。先看第一条:看看请求参数吧:参数解析:action:动作,这里是click,说明是点击行为type:类型,这里是wise,中文意思是明智的,说明这个是用户明智的选择么???position:点击了该页面下的哪条搜索结果,这里我点了第一条tag:搜索结果标记吧,估计searchId:搜索idbaiduId:无_rand: 时间戳这条请求其实主要就是记录了用户点击了哪条搜索结果,主要是位置信息。

以及点击发生的时间。接着来看第二条请求参数:好家伙,参数可不少。挑几个来讲讲吧。q:query 词,用户查询词rsv_xpath:xpath路径模板,记录用户是点击title的还是点击缩略图或者是链接位置。目前描述信息点击是无法跳转的,但是用户点击描述信息也会被记录的。上面是点击描述信息时记录的用户行为,可以看出来,也主要是记录用户点击了哪个排名位置的描述信息。title:点击的标题内容是什么,对于图片和链接的话就不是显示中文了,而是显示对应的信息,具体大家可以自己点击看看。

1-191106195932430.jpg

url:目标网页的加密地址链接rsv_height,rsv_width:该搜索结果位置的高度和宽度rsv_tpl:该搜索结果的模板,se_com_default,这个似乎是正常的排名模板哦。广告和合作以及开放平台的都不一样。p1: 这里是指改搜索结果的排名位置,下面的p5也是一样的rsv_srcid:搜索结果模板id标识,这个跟rsv_srcid是配套的,1599似乎是正常的排名F到F3参数,不知道是啥,之前好像在哪看到过对应的解析,忘了。T:点击时的时间戳剩下的参数就不一一展开了,因为开发也用不到,有的呢我也不是很理解具体是什么意思哈。

如果哪位大佬知道的欢迎告知。第三条请求就是为您推荐:看下请求参数,其实一眼看就知道个大概了,这个主要就是点击某条搜索结果之后,百度会给你推荐一些词。也就是当然了,并不是点击每条搜索结果都有的,至于为啥。目前没有具体研究,这个涉及到另外的一个专利,搜索相关推荐,有兴趣可以看看。好了,介绍了那么多,看起来要破解的东西还是蛮多的。但是如果不用发包的方式来模拟点击的话还是比较好实现的。这里总结下要开发一个快排程序的需要哪些玩意:编程语言,要会Python,Java,易语言,C#等,都可以哈。

这里建议用Python,简单嘛!要有多款不同版本的浏览器的内核,这样才能加载和执行js。这里可以用谷歌和火狐的内核驱动,IE的驱动等等。谷歌浏览器各个版本的内核下载地址: 如何在这些浏览器内核上模拟真实的用户点击浏览行为呢?那就用到一个很出名的自动化测试工具“selenium”。最后就是大量的代理IP了, 毕竟如果只是同一个IP或者某个小区域的IP点击的话,百度很容易就识别出来了。

1-191106195919454.jpg

比较出名的代理IP厂商有:讯代理,蘑菇代理,站大爷等。当然了,还得掌握如何用Python实现一个分布式的系统哦,毕竟一台服务器估计是不够用的。目前主流的分布式通讯方式有两种,一种是直接使用RPC协议进行通讯的,这个底层是用TCP协议。还有一种是比较简单的,就是通过http请求来实现啦,然后再结合celery分布式异步任务框架来完成就OK,这样实现起来就简单的多了。只要比RPC简单哈。附celery官网地址:(不是最新版的)::为了更大化的利用服务器的资源,可以用docker来把程序做成一个个小的镜像服务,这样一台服务器上就可以运行很多个docker镜像了。

万伦网络的云霸搜快排牛!

比开虚拟机的成本低很多哦。docker是什么鬼?,就可以开始开发我们的快排程序啦。这里我就不带大家一起开发了哈,说下我自己YY出来的程序实现流程。程序架构(仅供参考,非完整的,毕竟我没开发过)主要有五大类:驱动类:主要是获取和设置浏览器内核驱动以及获取搜索结果的相关方法行为类:主要用于模拟用户的浏览行为策略类:用于设置用户浏览和点击策略的,比如用户搜索一个词,用户是直接一页页的找到目标网址直接点击呢,还是每页都点击一下几条搜索结果,然后一直点击到目标结果之后退出?又或者是搜索了目标词的前续搜索词和后续搜索词等? 任务类:主要用来添加,获取和执行任务用的代理IP池:一个稳定的IP池是非常重要的 以上就是快排程序基础的五大类,当然了还有很多细节的东西就不一一展开了,有兴趣的自己再琢磨琢磨就OK。

1-191106195U0112.jpg

下面说说程序的执行流程:添加任务,一般的任务就是对某一批关键词及这批关键词要点击的主域名等。可以事先准备一种基础策略与关键词进行匹配。比如对于控制点击次数的,可以根据关键词的搜索量或者指数来分配。eg. 对于0-50指数的关键词,每天点击100次,3天之后观察效果,没上去的就继续添加点击次数等。把任务放到任务队列,由分布式任务队列统一进行管理。如果没有事先分配点击策略的,那么会随机选择一种策略进行执行。执行完成等待下一次任务的分配。

1-191106195ZNR.jpg

以上就是一个很粗略的快排程序的设计,其实还有很多细节的东西,比如:如何自动化监控和调整执行点点击策略等。这个需要加入一个监控模块和调整模块。对于已经点击到首页的关键词是不是可以减少点击次数,好让资源分配给哪些需要更多点击次数的任务等?快排系统的好坏主要就是在与点击策略的设计,如何让你的点击更符合真实的用户点击和浏览行为,模拟得越像,那么就越不容易被百度识别出来。效果当然就越好越长久啦。总结本文的目的只是带大家了解一下“快排”,以及给那些想要开发快排的童鞋一个思路和方向吧。

本人并没有真正开发过快排,所以呢,也不用请教我怎么开发啦。