PHP前端开发

分享一篇用Python刷浏览量的实例教程

百变鹏仔 2小时前 #Python
文章标签 浏览量

本篇文章主要介绍了python 自动刷博客浏览量实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

思路来源

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

前奏

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

立即学习“Python免费学习笔记(深入)”;


headers = {  'referer':'www.php.cn',  '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= 0while i <p>刚开始的时候,可以明显的看到博客数量的增加,(^^) 嘻嘻……初见成效咯。但是好景不长,我发现浏览量增加了10次之后。就呵呵了。</p><p>然后就不能增加了,估计是服务器对我这个访问做了一定的限制了,否则按理说应该是可行的。</p><p><strong>想方设法对坑</strong></p><p>俗话说“上有政策,下有对策”,我自然不能受这个约束啊,于是我就猜想是对我的IP进行了记录。然后对我的访问次数添加了一些限制。 <br></p><p><strong>我的解决办法:</strong></p><ol class=" list-paddingleft-2"><li><p>代理IP进行访问:但是考虑到没有服务器,所以代理不了IP进行访问了。</p></li><li><p>改变IP:既然是这样,那我就想办法改变自己的ip来进行访问呗。那么怎么改变自己的IP呢?(现在想想好后悔,当时计算机网络没有好好听课,IP欺骗没有学好,否则现在不就可以用了嘛)。但是条条大路通罗马嘛,我还有其他的方法。如下:</p></li></ol><p>C:UsersAdministrator&gt;ipconfig /release</p><p>Windows IP 配置</p><p>不能在 本地连接 上执行任何操作,它已断开媒体连接。</p><p>无线局域网适配器 无线网络连接:</p><p>   连接特定的 DNS 后缀 . . . . . . . :<br>   本地链接 IPv6 地址. . . . . . . . : fe80::1d9f:d97b:fd16:1f6f%<br>   默认网关. . . . . . . . . . . . . :</p><p>以太网适配器 本地连接:</p><p>   媒体状态  . . . . . . . . . . . . : 媒体已断开<br>   连接特定的 DNS 后缀 . . . . . . . : OurEDA.cn</p><p>以太网适配器 VMware Network Adapter VMnet1:</p><p>   连接特定的 DNS 后缀 . . . . . . . :<br>   本地链接 IPv6 地址. . . . . . . . : fe80::359d:e81d:741:f257%1<br>   IPv4 地址 . . . . . . . . . . . . : 192.168.229.1<br>   子网掩码  . . . . . . . . . . . . : 255.255.255.0<br>   默认网关. . . . . . . . . . . . . :</p><p>以太网适配器 VMware Network Adapter VMnet8:</p><p>   连接特定的 DNS 后缀 . . . . . . . :<br>   本地链接 IPv6 地址. . . . . . . . : fe80::94b1:d10f:b68:101d%1<br>   IPv4 地址 . . . . . . . . . . . . : 192.168.244.1<br>   子网掩码  . . . . . . . . . . . . : 255.255.255.0<br>   默认网关. . . . . . . . . . . . . :</p><p>以太网适配器 VirtualBox Host-Only Network:</p><p>   连接特定的 DNS 后缀 . . . . . . . :<br>   本地链接 IPv6 地址. . . . . . . . : fe80::a5eb:545c:7d89:9451%<br>   IPv4 地址 . . . . . . . . . . . . : 192.168.56.1<br>   子网掩码  . . . . . . . . . . . . : 255.255.255.0<br>   默认网关. . . . . . . . . . . . . :</p><p>隧道适配器 isatap.{4F399971-B739-4B71-BD79-E48233EEC9BE}:</p><p>   媒体状态  . . . . . . . . . . . . : 媒体已断开<br>   连接特定的 DNS 后缀 . . . . . . . :</p><p>隧道适配器 isatap.{1860C94E-1007-4418-9A26-7D8AA8F06E15}:</p><p>   媒体状态  . . . . . . . . . . . . : 媒体已断开<br>   连接特定的 DNS 后缀 . . . . . . . :</p><p>隧道适配器 isatap.OurEDA.cn:</p><p>   媒体状态  . . . . . . . . . . . . : 媒体已断开<br>   连接特定的 DNS 后缀 . . . . . . . :</p><p>隧道适配器 isatap.<a href="http://www.php.cn/wiki/596.html" target="_blank">dl</a>ut.edu.cn:</p><p>   媒体状态  . . . . . . . . . . . . : 媒体已断开<br>   连接特定的 DNS 后缀 . . . . . . . :</p><p>隧道适配器 isatap.{6F7F27ED-942E-4EFB-ACF2-A4E8793B161D}:</p><p>   媒体状态  . . . . . . . . . . . . : 媒体已断开<br>   连接特定的 DNS 后缀 . . . . . . . :</p><p>C:UsersAdministrator&gt;ipconfig /re<a href="http://www.php.cn/wiki/165.html" target="_blank">new</a></p><p>Windows IP 配置</p><p>不能在 本地连接 上执行任何操作,它已断开媒体连接。</p><p>无线局域网适配器 无线网络连接:</p><p>   连接特定的 DNS 后缀 . . . . . . . :<br>   本地链接 IPv6 地址. . . . . . . . : fe80::1d9f:d97b:fd16:1f6f%12<br>   IPv4 地址 . . . . . . . . . . . . : 192.168.58.70<br>   子网掩码  . . . . . . . . . . . . : 255.255.252.0<br>   默认网关. . . . . . . . . . . . . : 192.168.56.1</p><p>以太网适配器 本地连接:</p><p>   媒体状态  . . . . . . . . . . . . : 媒体已断开<br>   连接特定的 DNS 后缀 . . . . . . . : OurEDA.cn</p><p>以太网适配器 VMware Network Adapter VMnet1:</p><p>   连接特定的 DNS 后缀 . . . . . . . :<br>   本地链接 IPv6 地址. . . . . . . . : fe80::359d:e81d:741:f257%14<br>   IPv4 地址 . . . . . . . . . . . . : 192.168.229.1<br>   子网掩码  . . . . . . . . . . . . : 255.255.255.0<br>   默认网关. . . . . . . . . . . . . :</p><p>以太网适配器 VMware Network Adapter VMnet8:</p><p>   连接特定的 DNS 后缀 . . . . . . . :<br>   本地链接 IPv6 地址. . . . . . . . : fe80::94b1:d10f:b68:101d%15<br>   IPv4 地址 . . . . . . . . . . . . : 192.168.244.1<br>   子网掩码  . . . . . . . . . . . . : 255.255.255.0<br>   默认网关. . . . . . . . . . . . . :</p><p>以太网适配器 VirtualBox Host-Only Network:</p><p>   连接特定的 DNS 后缀 . . . . . . . :<br>   本地链接 IPv6 地址. . . . . . . . : fe80::a5eb:545c:7d89:9451%16<br>   IPv4 地址 . . . . . . . . . . . . : 192.168.56.1<br>   子网掩码  . . . . . . . . . . . . : 255.255.255.0<br>   默认网关. . . . . . . . . . . . . :</p><p>隧道适配器 isatap.{4F399971-B739-4B71-BD79-E48233EEC9BE}:</p><p>   媒体状态  . . . . . . . . . . . . : 媒体已断开<br>   连接特定的 DNS 后缀 . . . . . . . :</p><p>隧道适配器 isatap.{1860C94E-1007-4418-9A26-7D8AA8F06E15}:</p><p>   媒体状态  . . . . . . . . . . . . : 媒体已断开<br>   连接特定的 DNS 后缀 . . . . . . . :</p><p>隧道适配器 isatap.OurEDA.cn:</p><p>   媒体状态  . . . . . . . . . . . . : 媒体已断开<br>   连接特定的 DNS 后缀 . . . . . . . :</p><p>隧道适配器 isatap.dlut.edu.cn:</p><p>   媒体状态  . . . . . . . . . . . . : 媒体已断开<br>   连接特定的 DNS 后缀 . . . . . . . :</p><p>隧道适配器 isatap.{6F7F27ED-942E-4EFB-ACF2-A4E8793B161D}:</p><p>   媒体状态  . . . . . . . . . . . . : 媒体已断开<br>   连接特定的 DNS 后缀 . . . . . . . :</p><p>是的,想必大家都看到了。核心的两个命令就是</p><p class="jb51code"><br></p><pre class="brush:bash;">// 更改路由表的配置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,refrom bs4 import BeautifulSoupdef getHtml(url,headers):  req = urllib2.Request(url,headers=headers)  page = urllib2.urlopen(req)  html = page.read()  return htmldef parse(data):  content = BeautifulSoup(data,'lxml')  return contentdef getReadNums(data,st):  reg = re.compile(st)  return re.findall(reg,data)url = 'http://jb51.net/marksinoberg/article/details/51493318'headers = {  'referer':'http://jb51.net/',  '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 = 0while i<p>代码运行结果:</p><pre class="brush:plain;">D:SoftwarePython2python.exe E:/Code/Python/MyTestSet/ulib2/AddWatcher.py94人阅读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时间刷新一遍。这样一天下来,一篇文章大概也能实现几百的访问吧。(我没试过,我也不知道)