今天上半年为了满足客户网站的排名需求,在大环境不好的情况下开辟一些新客户,公司特别组织我们几个资深研发人员成立了一个研发小组,来专门研发了这款网站SEO网站排名刷量工具,目的是帮助客户网站迅速提升热度和关键词排名,网站前期访问量少可以帮助客户提升网站流量,网站中期内容建设差不多了帮助客户提升关键词排名。研发过程中还是踩了不少的雷,现在把排名刷量功能实现过程中踩过的一些坑分享出来,避免大家穿新鞋走老路。

坑1、动态切换Ip

SEO网站排名刷量代码中的动态切换IP代码是为了应对搜索引擎反爬虫模拟真实用户访问而设计的一段代码,这段代码需要运行在ADSL服务器上才能起到切换Ip的效果,这段其实没啥技术难度,宽带信息从对应配置文件中读取,包括3个信息:宽带名称、登陆账号和登陆密码。但有几个细节要注意,这几个细节主要是为了保证重新拨号功能代码的稳定性,其实都是由于ADSL拨号技术的局限性造成的。

细节1:拨号断开和重新拨号之间的时间间隔,这个时间间隔可以设置为3~5秒,一般都不超过10秒,如果时间间隔过短,可能会导致重新包好失败

细节2:重新拨号连接成功后也要等待几秒,再去执行刷量操作,一般也不超过10秒,如果时间间隔过短,可能会导致后续刷量代码执行失败

细节3:有时候会出现第一次重新拨号失败的情况,这时候可以再重新尝试一次

# 动态切换IP
def switchIp():# 断开连接stopADSL()# 等待10秒再重新连接,10秒防止间隔过快runIdleSomeTime(10)# 重新连接runADSL()# 连接成功10秒后再进行操作runIdleSomeTime(10)# 通过ADSL拨号上网
def runADSL():name = adsler.getValueByKey("name")user = adsler.getValueByKey("user")pwd = adsler.getValueByKey("pwd")p = myPopen("Rasdial %s %s %s"%(name,user,pwd))my_logger_info(logger, p)if "错误" in p: #如果发生连接错误,重试一次runIdleSomeTime(10)p = myPopen("Rasdial %s %s %s"%(name,user,pwd))if "错误" in p:raise Exception("ADSL重新连接发生错误")# 断开ADSL拨号上网
def stopADSL():try:name = adsler.getValueByKey("name")p = myPopen("Rasdial %s /disconnect"%(name))my_logger_info(logger, p)except Exception as e:info = traceback.format_exc()my_logger_info(logger, info)

坑2、浏览器占用内存过多

SEO网站排名刷量代码中的第一段就是要通过selenium框架来创建浏览器,然后在浏览器中进行搜索查询,现在流行的浏览器当然非chrome莫属,但chrome浏览器的缺点是开的标签页越多占用的内存越多,这就要求你的服务器内存配置就要高,否则跑着跑着服务器内存就不够用了,这就意味着你的服务器成本要增加。为了节省成本后来就选用了Phantomjs浏览器,好处是无界面占用内存小,chrome浏览器虽然现在也出了headless无界面版本,但我们测试后发现标签页开多了内存占用还是很多。chrome浏览器可以用来做测试程序,因为模拟访问过程都能看得见。

下面为创建Chrome浏览器的代码:

#创建Chrome浏览器
def createChromeWebDriver():# 配置参数options = webdriver.ChromeOptions()# 手动指定使用的浏览器位置# options.binary_location = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"# 设置网页编码options.add_argument('lang=zh_CN.UTF-8')# 禁止加载图片options.add_argument('blink-settings=imagesEnabled=false')# 禁用sandboxoptions.add_argument('--no-sandbox')# 禁用显卡options.add_argument('--disable-gpu')# 无界面模式# options.add_argument('--headless')# 禁用浏览器正在被自动化程序控制的提示,目前看起来没啥用# options.add_argument('--disable-infobars')# # 设置不同请求头# useragent=['--User-Agent=Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:34.0) Gecko/20100101 Firefox/34.0',# '--User-Agent=Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6',# '--User-Agent=Mozilla/5.0 (Windows NT 6.2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11',# '--User-Agent=Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)',# '--User-Agent=MozillaOnRunButtonClickNewThread/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0',# '--User-Agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/44.0.2403.89 Chrome/44.0.2403.89 Safari/537.36']# options.add_argument(useragent[random.randint(0,len(useragent)-1)])# ua=getPcUserAgent()# options.add_argument('--User-Agent=%s'%(ua))# # 使用代理IP# ip=getProxyId()# logger.info("proxyIp:%s" % ip)# options.add_argument('--proxy-server=http://%s' % ip)driver = webdriver.Chrome(options=options, keep_alive=None)# 防止selenium访问被识别出来,不算流量driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})return driver

下面为创建Phantomjs浏览器的代码:

#创建Phantomjs浏览器
def createPhantomjsWebDriver():# 调用环境变量指定的PhantomJS浏览器,创建浏览器对象# driver = webdriver.PhantomJS()# 如果没有在环境变量指定的phantomjs的位置# 伪装成chrome,防止被反爬虫cap = webdriver.DesiredCapabilities.PHANTOMJSua=getPcUserAgent()cap["phantomjs.page.settings.userAgent"] = uacap["phantomjs.page.customHeaders.User-Agent"] = ua# cap["phantomjs.page.settings.resourceTimeout"] = 1000*60*5# 禁用缓存cap["phantomjs.page.settings.disk-cache"] = False# 不载入图片,爬页面速度会快很多cap["phantomjs.page.settings.loadImages"] = Falsedriver=webdriver.PhantomJS (executable_path="./phantomjs.exe",desired_capabilities=cap)# 设置页面加载超时时间driver.set_page_load_timeout(60)return driver

坑3、网站反爬虫应对

SEO网站排名刷量代码中访问客户网站那一段代码,在运行过程中最容易出现问题,就是触发了客户网站的发爬虫机制,因为现在客户网站一般都安装了防攻击软件,所以频繁的对网站访问很容易触发网站防攻击软件的防御机制,因此在代码中要对相关异常进行处理,避免刷量程序因为这些异常(例如ConnectionRefusedError,NewConnectionError,MaxRetryError)而中断执行。网站的防御机制被触发的表现一般是网站禁止你访问不让你跟它建立连接。处理这些异常的代码如下:

        try:wd_s_ary=wdary[n].split(":")wd_hour=wd_s_ary[0] #几点开始搜索该关键词wd_name=wd_s_ary[1] #关键词名称wd_site=wd_s_ary[2] #对应网站urlhourstr = getNowHourStr() #获取当前小时点if int(wd_hour) < int(hourstr):continueelif int(wd_hour) == int(hourstr):passelif int(wd_hour) > int(hourstr):while int(wd_hour) > int(hourstr) and not myframe.stop_refresh_page_thread:runIdleSomeTime(60)hourstr = getNowHourStr()# 支持人工停止刷量if (myframe.stop_refresh_page_thread):break.....    except (ConnectionRefusedError,NewConnectionError,MaxRetryError,TimeoutException) as e :info = traceback.format_exc()my_logger_info(logger, info)# 连接异常处理# 以下为被百度服务器或者网站服务器积极拒绝,无法连接异常现象的处理手段# 关闭浏览器driver.quit()driver = None# 切换IPswitchIp()# 重新启动浏览器driver = createPhantomjsWebDriver()# 异常处理完成后,等待20~30秒后,再进行下一个词的搜索runIdleSomeTime(random.randint(20,30))

其他

在程序运行过程中,还有几点要做到,这样后期运营起来才会比较省心。

点1:要注意记录各台服务器上的刷量日志,以便于统计各个关键词的刷量数量和排名

点2:能够自动分发任务到各台执行服务器机子上,这样就可以随时增加/编辑刷量任务

点3:程序运行过程中,遇到不可预见的异常导致程序中断,要发送异常邮件给运营人员

最后

欢迎各位同学留言沟通探讨。

SEO网站排名刷量代码中的一些坑相关推荐

  1. SEO 网站排名优化(资源收藏,用得着时看看)

    里面有系列专辑.必要时看看.先收藏 http://homepage.yesky.com/tbotgfs/ www.seo360.cn

  2. 在哪里刷题_刷题过程中,这些坑你踩了几个?

    练习卷做了一套又一套,题目刷了一遍又一遍,一考试却发现,分数进步并不大,有些同学甚至没有进步.刷刷刷,为什么分刷不上来?你可能掉进了这些刷题误区--一看就会不少同学在做题的过程中遇到不会的题目的时候, ...

  3. 网站推广专员浅析网站排名越来越差大抵离不开这些网站推广重点

    经过一段时间的运营优化后,站长发现在当下与过往优化过的网站相比,网站排名效果远远没有达到该阶段预期效果,反而在搜索引擎中排名效果越来越差,也拉垮了网站整体排名趋势变化,究竟是网站中哪些地方出了错?下面 ...

  4. 骗补刷量 黑产变现|短视频及直播行业的暗流涌动

    爱的魔力转圈圈 你说嘴巴嘟嘟嘟嘟嘟嘟嘟 好嗨呦 视频行业有多火,从上面简单几句"有声音"的歌词就可以体现. 目前,在线视频.短视频.直播三种不同类型的视频可谓是三分天下.相比在线视 ...

  5. 骗补刷量 黑产变现|短视频及直播行业的暗流涌动...

    爱的魔力转圈圈 你说嘴巴嘟嘟嘟嘟嘟嘟嘟 好嗨呦 视频行业有多火,从上面简单几句"有声音"的歌词就可以体现. 目前,在线视频.短视频.直播三种不同类型的视频可谓是三分天下.相比在线视 ...

  6. 网站刷关键词_中小企业网站排名如何做SEO优化 - 刷百度关键词排名

    原出处:超级排名系统 原文链接:中小企业网站排名如何做SEO优化? - 超级排名系统 现在很多企业都有招网络负责人做优化,SEO优化是需要长期坚持的推广工作,需要把网站运营推广的该行业相关关键词理出来 ...

  7. 博客网站源代码_详解SEO布词以及网站排名优化技巧

    首先,谈谈新手以及老手在认知上容易出现的SEO误区,我认为有以下几点因素,不容忽视. 1.SEO优化就是为了排名.就是发外链 不少人认为做SEO就是为了排名,完全不考虑网站文章的质量.可读性以及用户体 ...

  8. SEO|搜索引擎优化(如何让你的网站排名靠前)

    如何让你的网站排名靠前         网站做好了,怎样才能让你的网站在各大搜索引擎中排名靠前呢?网上的帖子很多,通过搜索和总结,整理出了一套自己行之有效的方法,写出来供大家参考 成功案例推荐:天气预 ...

  9. 怎么用服务器刷网站排名,怎样提高网站排名?这三个提升网站排名的方法你一定要知道...

    在优化网站排名中,很多站长都想快速提升网站排名,但是由于百度等搜索引擎算法的缘故,网站排名的提升需要多方面因素的共同作用,包含百度搜索爬取.审批.流量大小.行业特性.商品(服务项目)特性.百度收录量. ...

最新文章

  1. Linux压缩/解压缩
  2. 前端接收pdf文件_如何实现springmvc将返回的给前端的pdf文件放在浏览器里预览
  3. Oracle格式化数字和日期的方法
  4. 2分钟,我把网站性能优化了3倍!
  5. react中绑定点击事件_在React中绑定事件处理程序的最佳方法
  6. Foxmail记事插入的表格怎么设置单元格边距
  7. [读书笔记] 设计模式与游戏完美开发
  8. Tomcat在Eclipse下的启动
  9. mysql star item 失败_解决CentOS7下MySQL服务启动失败的问题.md
  10. 从IBM和SUN分析当前SOA公司现状
  11. 安防巨头们集体造车 跳出安防已成常态
  12. 在java中什么是所有类的父类_java中object是所有类的父类吗
  13. 验证身份证的所在地址和前6位号码
  14. 全国计算机三级网络技术题,全国计算机三级网络技术大题技巧
  15. 什么是1u服务器;服务器中的u是什么意思
  16. 【过程挖掘算法4】Alpha Miner及其系列算法
  17. caffe中loss函数代码分析--caffe学习(16)
  18. linux系统下的的nohup命令
  19. GIS是什么?『总览篇』
  20. GitHub构建Maven依赖仓库

热门文章

  1. SpringSource创始人Rod Johnson执掌十年后离开
  2. 使用adobe acrobat为PDF插入空白页
  3. vue实现一个星级打分效果_vue 实现的评分小星星组件,包括半星
  4. docker操作mongo(docker desktop)
  5. D-Wave Leap量子云系统首次落地欧洲于利希超算中心
  6. verilog计数器分频
  7. 大数据求索(8):Spark Streaming简易入门一
  8. 支付系统详解:收付款能力
  9. 一个前端初学者的学习总结
  10. 各种类型转换 LPCTSTR 方法