Python 自动刷博客浏览量
哈哈,今天的话题有点那什么了哈。咱们应该秉承学习技术的角度来看,那么就开始今天的话题吧。
思路来源
今天很偶然的一个机会,听到别人在谈论现在的“刷量”行为,于是就激发了我的好奇心。然后看了下requests模块正好对我有用,就写了一个简单的测试用例。神奇的发现这一招竟然是管用的。那还等什么,开刷咯。
前奏
思路很简单,就是一个发送请求的实现,就可以了。代码如下:
headers = {
    'referer':'http://blog.csdn.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'
}
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://blog.csdn.net/marksinoberg/article/details/51501377'
    getHtml(url,headers)刚开始的时候,可以明显的看到博客数量的增加,(^__^) 嘻嘻……初见成效咯。但是好景不长,我发现浏览量增加了10次之后。就呵呵了。 
 
然后就不能增加了,估计是服务器对我这个访问做了一定的限制了,否则按理说应该是可行的。
想方设法对坑
俗话说“上有政策,下有对策”,我自然不能受这个约束啊,于是我就猜想是对我的IP进行了记录。然后对我的访问次数添加了一些限制。 
我的解决办法:
- 代理IP进行访问:但是考虑到没有服务器,所以代理不了IP进行访问了。 
- 改变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://blog.csdn.net/marksinoberg/article/details/51493318'
headers = {
    'referer':'http://blog.csdn.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 = 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次访问。
展望
其实我是可以做到一次运行多次刷新的效果的,但是这样做不是特别的正派,所以我就说一下自己的思路吧。
- 对result(浏览量结果)做判断,当出现连续的两次结果一致的时候,开启python执行cmd命令,更新自己的IP。但是这是个耗时操作,可以放到一个线程里面 
- 再就是对自己的博客list界面进行抓取,获得自己的所有的博文。当然,这里很明显会使用到模拟登陆。我之前写过一个模拟登陆的博文,有需要的可以参考一下。模拟登陆。然后对每一个博客进行刷量。这样虽然没有真正的解决问题,但是积少成多,也会起到一个不错的效果。 
- 做一个定时刷量的线程,每隔XX时间刷新一遍。这样一天下来,一篇文章大概也能实现几百的访问吧。(我没试过,我也不知道) 
- 等等吧 - 写在最后的话- 使用代码来提高自己的博客访问量的行为时可耻的,在这里我首先做一下自我检讨。但是我是以解决问题的角度来看待这件事的,所以我很高兴能和大家分享。 
 貌似并没有从根本上解决浏览量刷新的问题,想出了的也是几个弥补性质 的方案。如果大家有好的建议,欢迎留下你的评论。
Python 自动刷博客浏览量的更多相关文章
- 【Python】模块学习之Timer定时任务,递归定时自调获取博客浏览量
		Timer定时任务 下面是Timer函数的官方doc介绍信息 """ Call a function after a specified number of second ... 
- python之刷博客访问量
		通过写刷访问量学习正则匹配 说明信息 说明:仅仅是为了熟悉正则表达式以及网页结构,并不赞成刷访问量操作. 1.刷访问量第一版 1.1 确定网页url结构,构造匹配模式串 首先是要确定刷的网页.第一版实 ... 
- 010-利用Selenium+python自动输入博客账号密码登录
		from selenium import webdriver import time def OpenUrl(): # 访问网址 driver.get(url) def Login(): # 查询登录 ... 
- 使用Jenkins自动部署博客
		title: 使用Jenkins自动部署博客 toc: true comment: true date: 2017-12-17 19:48:10 tags: ['Jenkins', 'CI'] cat ... 
- C#爬虫使用代理刷csdn文章浏览量
		昨天写了一篇关于“c#批量抓取免费代理并验证有效性”的文章,接着昨天的目标继续完成吧,最终实现的目的就是刷新csdn文章的浏览量(实际上很简单,之前博客园的文章也是可以使用代理ip来刷的,后来不行了) ... 
- C蛮的全栈之路-node篇(二) 实战一:自动发博客
		目录 C蛮的全栈之路-序章 技术栈选择与全栈工程师C蛮的全栈之路-node篇(一) 环境布置C蛮的全栈之路-node篇(二) 实战一:自动发博客 ---------------- 我是分割线 ---- ... 
- postman---postman自动发博客
		前面写了一篇如何通过Cookies值去登录博客园,今天我们来通过登录博客园之后,我们进行通过Postman自动写博客 自动写博客 1.打开Postman.填写博客园对应的Cookies: 2.抓取编写 ... 
- 有哪些关于 Python 的技术博客?
		Python是一种动态解释型的编程语言,它可以在Windows.UNIX.MAC等多种操作系统以及Java..NET开发平台上使用.不过包含的内容很多,加上各种标准库.拓展库,乱花渐欲迷人眼.因此如何 ... 
- python爬取博客圆首页文章链接+标题
		新人一枚,初来乍到,请多关照 来到博客园,不知道写点啥,那就去瞄一瞄大家都在干什么好了. 使用python 爬取博客园首页文章链接和标题. 首先当然是环境了,爬虫在window10系统下,python ... 
随机推荐
- SRM 558 SurroundingGame
			题意: 给定一个网格,每个网格有选取代价和占据收益.每个点被占据,需要满足以下两个条件至少一个条件:1.被选取 2.邻近方格都被选取(有公共边被称为邻近) 不一定要占据所有方格,求最大收益. 输入 ... 
- Go学习——new()和 make()的区别详解(转载)
			这篇文章主要介绍了Go语言中new()和 make()的区别详解,本文讲解了new 的主要特性.make 的主要特性,并对它们的区别做了总结,需要的朋友可以参考下 概述 Go 语言中的 new 和 m ... 
- hdu 1255 覆盖的面积(求覆盖至少两次以上的面积)
			了校赛,还有什么途径可以申请加入ACM校队? 覆盖的面积 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K ... 
- IDEA 整合 SSM 框架学习
			认识 Spring 框架 更多详情请点击这里:这里 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Control ... 
- Windows 2008 R2_NLB网络负载均衡(图文详解)(转)
			目录 前言 软件环境 DNS域名服务器 DNS服务器原理 DNS域名空间 DNS区域 DNS服务器的类别 DNS查询模式 缓存文件 配置DNS服务器 DNS服务的应用 新建子域 在DNS正向解析中新建 ... 
- Go 实现判断变量是否为合法数字 IsNumeric 算法
			[转] http://www.syyong.com/Go/Go-to-determine-whether-the-variable-is-a-legal-digital-algorithm.html ... 
- Windows下createfile函数用GENERIC_READ访问模式打不开磁盘
			这两天做毕设,快气死了!想读写磁盘扇区,我就百度了,都是这样写的: HANDLE hDevice = CreateFile(TEXT("\\\\.\\PhysicalDrive1" ... 
- VGG网路结构
			VGG网络的基本结构 如图所示,从A到E网络的深度是逐渐增加的,在A中有11个权重层(8个卷积层,3个全连接层),在E中有19个权重层(16个卷积层,3个全连接层),卷积层的宽度是十分小的,开始时在第 ... 
- 零开始:NetCore项目权限管理系统:定义基本接口和实现
			上一篇讲了基础的框架搭建 地址:http://www.cnblogs.com/fuyu-blog/p/8909779.html 这篇主要讲解SqlSugar ORM的数据库连接以及建表和接口 ... 
- 轻松理解AOP问题
			先说一个Spring是什么吧,大家都是它是一个框架,但框架这个词对新手有点抽象,以致于越解释越模糊,不过它确实是个框架的,但那是从功能的角度来定义的,从本质意义上来讲,Spring是一个库,一个Jav ... 
