Python 自动刷博客浏览量实例代码


Posted in Python onJune 14, 2017

思路来源

今天很偶然的一个机会,听到别人在谈论现在的“刷量”行为,于是就激发了我的好奇心。然后看了下requests模块正好对我有用,就写了一个简单的测试用例。神奇的发现这一招竟然是管用的。那还等什么,开刷咯。

前奏

思路很简单,就是一个发送请求的实现,就可以了。代码如下:

headers = {
  'referer':'http://3water.com/',
  'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36'
}

def getHtml(url,headers):
  req = urllib2.Request(url,headers=headers)
  page = urllib2.urlopen(req)
  html = page.read()
  return html

我们手动的添加一下目标url以及一个headers就可以了。我自然的会用自己的做下测试咯。

代码试着运行了一下,确实是可以增加浏览量滴。

慢增长

既然这样的方案是可行的,那就说明思路是正确的了。于是我们自然会想到写一个循环吧。这样不就能实现大量的浏览的增加了吗?
是的,我确实是这样干的。代码如下:

i= 0
while i < 10:
  url = 'http://3water.com/marksinoberg/article/details/51501377'
  getHtml(url,headers)

刚开始的时候,可以明显的看到博客数量的增加,(^__^) 嘻嘻……初见成效咯。但是好景不长,我发现浏览量增加了10次之后。就呵呵了。

然后就不能增加了,估计是服务器对我这个访问做了一定的限制了,否则按理说应该是可行的。

想方设法对坑

俗话说“上有政策,下有对策”,我自然不能受这个约束啊,于是我就猜想是对我的IP进行了记录。然后对我的访问次数添加了一些限制。

我的解决办法:

  1. 代理IP进行访问:但是考虑到没有服务器,所以代理不了IP进行访问了。
  2. 改变IP:既然是这样,那我就想办法改变自己的ip来进行访问呗。那么怎么改变自己的IP呢?(现在想想好后悔,当时计算机网络没有好好听课,IP欺骗没有学好,否则现在不就可以用了嘛)。但是条条大路通罗马嘛,我还有其他的方法。如下:

C:\Users\Administrator>ipconfig /release

Windows IP 配置

不能在 本地连接 上执行任何操作,它已断开媒体连接。

无线局域网适配器 无线网络连接:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::1d9f:d97b:fd16:1f6f%
   默认网关. . . . . . . . . . . . . :

以太网适配器 本地连接:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . : OurEDA.cn

以太网适配器 VMware Network Adapter VMnet1:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::359d:e81d:741:f257%1
   IPv4 地址 . . . . . . . . . . . . : 192.168.229.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

以太网适配器 VMware Network Adapter VMnet8:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::94b1:d10f:b68:101d%1
   IPv4 地址 . . . . . . . . . . . . : 192.168.244.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

以太网适配器 VirtualBox Host-Only Network:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::a5eb:545c:7d89:9451%
   IPv4 地址 . . . . . . . . . . . . : 192.168.56.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

隧道适配器 isatap.{4F399971-B739-4B71-BD79-E48233EEC9BE}:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :

隧道适配器 isatap.{1860C94E-1007-4418-9A26-7D8AA8F06E15}:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :

隧道适配器 isatap.OurEDA.cn:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :

隧道适配器 isatap.dlut.edu.cn:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :

隧道适配器 isatap.{6F7F27ED-942E-4EFB-ACF2-A4E8793B161D}:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :

C:\Users\Administrator>ipconfig /renew

Windows IP 配置

不能在 本地连接 上执行任何操作,它已断开媒体连接。

无线局域网适配器 无线网络连接:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::1d9f:d97b:fd16:1f6f%12
   IPv4 地址 . . . . . . . . . . . . : 192.168.58.70
   子网掩码  . . . . . . . . . . . . : 255.255.252.0
   默认网关. . . . . . . . . . . . . : 192.168.56.1

以太网适配器 本地连接:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . : OurEDA.cn

以太网适配器 VMware Network Adapter VMnet1:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::359d:e81d:741:f257%14
   IPv4 地址 . . . . . . . . . . . . : 192.168.229.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

以太网适配器 VMware Network Adapter VMnet8:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::94b1:d10f:b68:101d%15
   IPv4 地址 . . . . . . . . . . . . : 192.168.244.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

以太网适配器 VirtualBox Host-Only Network:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::a5eb:545c:7d89:9451%16
   IPv4 地址 . . . . . . . . . . . . : 192.168.56.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

隧道适配器 isatap.{4F399971-B739-4B71-BD79-E48233EEC9BE}:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :

隧道适配器 isatap.{1860C94E-1007-4418-9A26-7D8AA8F06E15}:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :

隧道适配器 isatap.OurEDA.cn:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :

隧道适配器 isatap.dlut.edu.cn:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :

隧道适配器 isatap.{6F7F27ED-942E-4EFB-ACF2-A4E8793B161D}:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :

是的,想必大家都看到了。核心的两个命令就是

// 更改路由表的配置
ipconfig / release // 释放网络,
ipconfig /renew  // 重新分配IP

这样基本上对于改变自己的IP是有点效果的。尤其是对局域网用户而言。

所以,我只需要在Python代码中调用系统的cmd命令,就可以动态的改变自己的IP了。也就达成了我的需求了

难题

虽然IP的问题解决了,但是这样刷的话,还是太慢。因为路由表的更新时需要时间的。而这和代码运行的速度比起来,真的是太慢太慢了。而且每次只能刷出十个浏览量,额。确实是比较的尴尬啊。费了这么大的劲,才刷了十个浏览量。怎么解决这个问题呢?

我其实也没有真正的解决这个问题,但是我发现这个限制也是不特别的强,因为我中途吃了个饭,回来的时候就发现原来的IP又可以刷了。大概45分钟左右的间隔吧!这是个突破点。
源码

其实思路很简单,就是想方设法的针对问题解决问题。不管对方的系统多么的坚固,也不可能是天衣无缝,总会有一种解决的办法的。下面是代码。

# coding:utf-8

#  __author__ = 'Mark sinoberg'
#  __date__ = '2016/5/26'
#  __Desc__ = 测试测试 刷新自己的博客的浏览量

import urllib2,re
from bs4 import BeautifulSoup

def getHtml(url,headers):
  req = urllib2.Request(url,headers=headers)
  page = urllib2.urlopen(req)
  html = page.read()
  return html

def parse(data):
  content = BeautifulSoup(data,'lxml')
  return content

def getReadNums(data,st):
  reg = re.compile(st)
  return re.findall(reg,data)

url = 'http://3water.com/marksinoberg/article/details/51493318'
headers = {
  'referer':'http://3water.com/',
  'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36'
}
i = 0
while i<24:
  html = getHtml(url,headers)
  content = parse(html)
  result = content.find_all('span',class_='link_view')
  print result[0].get_text()
  i = i +1

代码运行结果:

D:\Software\Python2\python.exe E:/Code/Python/MyTestSet/ulib2/AddWatcher.py
94人阅读
95人阅读
96人阅读
97人阅读
98人阅读
99人阅读
100人阅读
101人阅读
102人阅读
103人阅读
104人阅读
105人阅读
106人阅读
107人阅读
108人阅读
109人阅读
110人阅读
111人阅读
112人阅读
113人阅读
114人阅读
115人阅读
115人阅读
115人阅读

Process finished with exit code 0

比较好的地方就是使用了BeautifulSoup抓取了特定位置的数据,这里是对浏览量的抓取。从上面的结果也可以看出,一个IP抓取的数据量是有限制的,一般来说是10~30个,这里貌似是22次访问。

展望

其实我是可以做到一次运行多次刷新的效果的,但是这样做不是特别的正派,所以我就说一下自己的思路吧。

  1. 对result(浏览量结果)做判断,当出现连续的两次结果一致的时候,开启python执行cmd命令,更新自己的IP。但是这是个耗时操作,可以放到一个线程里面
  2. 再就是对自己的博客list界面进行抓取,获得自己的所有的博文。当然,这里很明显会使用到模拟登陆。然后对每一个博客进行刷量。这样虽然没有真正的解决问题,但是积少成多,也会起到一个不错的效果。
  3. 做一个定时刷量的线程,每隔XX时间刷新一遍。这样一天下来,一篇文章大概也能实现几百的访问吧。(我没试过,我也不知道)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python对数据库操作
Mar 28 Python
Python列出一个文件夹及其子目录的所有文件
Jun 30 Python
浅谈numpy数组的几种排序方式
Dec 15 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
Jan 08 Python
python实现教务管理系统
Mar 12 Python
Python多线程原理与用法实例剖析
Jan 22 Python
python之mock模块基本使用方法详解
Jun 27 Python
在django view中给form传入参数的例子
Jul 19 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
python opencv实现证件照换底功能
Aug 19 Python
Django的ListView超详细用法(含分页paginate)
May 21 Python
Selenium环境变量配置(火狐浏览器)及验证实现
Dec 07 Python
python简单线程和协程学习心得(分享)
Jun 14 #Python
Python字符串处理实现单词反转
Jun 14 #Python
python3实现UDP协议的服务器和客户端
Jun 14 #Python
老生常谈Python基础之字符编码
Jun 14 #Python
python3实现TCP协议的简单服务器和客户端案例(分享)
Jun 14 #Python
Python之re操作方法(详解)
Jun 14 #Python
Python之py2exe打包工具详解
Jun 14 #Python
You might like
overlord人气高涨,却被菲利普频繁举报,第四季很难在国内上映
2020/05/06 日漫
php检测图片主要颜色的方法
2015/07/01 PHP
PHP7匿名类用法分析
2016/09/26 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
nodejs基础应用
2017/02/03 NodeJs
推荐VSCode 上特别好用的 Vue 插件之vetur
2017/09/14 Javascript
浅谈Node Inspector 代理实现
2017/10/19 Javascript
详解vue项目的构建,打包,发布全过程
2017/11/23 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
Python实现的科学计算器功能示例
2017/08/04 Python
Python 中Pickle库的使用详解
2018/02/24 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
Python中collections模块的基本使用教程
2018/12/07 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
Django如何实现网站注册用户邮箱验证功能
2019/08/14 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
童装店创业计划书
2014/01/09 职场文书
50岁生日感言
2014/01/23 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
学校火灾防控方案
2014/06/09 职场文书
娱乐节目策划方案
2014/06/10 职场文书
项目投资合作意向书
2014/07/29 职场文书
承兑汇票延期证明
2015/06/23 职场文书
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js