看了一篇博客后,感觉很好玩,那直接运行代码了,因为这个代码是python比较老的版本了,所以直接复制运行有点错误,只要稍加修改即可运行,具体可参考手册https://docs.python.org/3/library/urllib.request.html#urllib.request.Request
# -*- coding: utf-8 -*-
"""
Created on Sat Sep 30 10:57:20 2017
@author: hechengjian
"""
# -*- coding:utf-8 -*-
import urllib # Python中的cURL库
import urllib.request # Python中的cURL库
import time # 时间函数库,包含休眠函数sleep()
url = 'http://blog.csdn.net/sinat_29581293/article/details/78139940' # 希望刷阅读量的文章的URL
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' # 伪装成Chrome浏览器
refererData = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=csdn%20%E6%80%9D%E6%83%B3%E7%9A%84%E9%AB%98%E5%BA%A6%20csdnzouqi&oq=csdn%20%E6%80%9D%E6%83%B3%E7%9A%84%E9%AB%98%E5%BA%A6&rsv_pq=fe7241c2000121eb&rsv_t=0dfaTIzsy%2BB%2Bh4tkKd6GtRbwj3Cp5KVva8QYLdRbzIz1CCeC1tOLcNDWcO8&rqlang=cn&rsv_enter=1&rsv_sug3=11&rsv_sug2=0&inputT=3473&rsv_sug4=3753' # 伪装成是从baidu.com搜索到的文章
data = '' # 将GET方法中待发送的数据设置为空
headers = {'User-Agent' : user_agent, 'Referer' : refererData} # 构造GET方法中的Header
count = 0 # 初始化计数器
req = urllib.request.Request(url) # 组装GET方法的请求
req.add_header('Referer', refererData)
req.add_header('User-Agent', user_agent)
while 1: # 一旦开刷就停不下来
rec = urllib.request.urlopen(req) # 发送GET请求,获取博客文章页面资源
page = rec.read() # 读取页面内容到内存中的变量,这句代码可以不要
count += 1 # 计数器加1
print (count) # 打印当前循环次数
if count % 6: # 每6次访问为1个循环,其中5次访问等待时间为31秒,另1次为61秒
time.sleep(31) # 为每次页面访问设置等待时间是必须的,过于频繁的访问会让服务器发现刷阅读量的猥琐行为并停止累计阅读次数
else:
time.sleep(61)
http://blog.csdn.net/qidi_huang/article/details/51658868
【事情起因】
前段时间我开始写博客,后来发现博客文章的阅读量实际上是文章对应网页的被打开次数。于是我有了个想法:可不可以写一个程序,让她不断访问某篇文章的页面,以此刷高博客的阅读量呢?要回答这个问题很简单,试一试不就知道了!
正好这段时间看了 cURL 和 Python,很自然地想把她们结合起来。
按照这个思路,我写了下面这个脚本:
将以上代码保存为脚本 spider.py,通过 Python 解释器运行便实现了给博客指定文章刷阅读量的效果。
【注意事项】
需要注意的是 if count % 6 这个条件语句可以替换为其它逻辑的代码,比如在 15~30秒 这个范围内给每次访问设定随机的睡眠时间,目的是避免过于明显的访问规律。
过于频繁的访问会被服务器识别到,并使其停止对文章阅读量的累加。所以每次访问的睡眠时间虽可以酌情设置,但不能太短。
另外,有的网站对于访问者的 IP 也有检测,对于这种情况我们可以构建一个代理服务器 IP 池,每次访问时都重新从 IP池 中选取一个新的代理服务器。
【实战效果】
实战效果还是不错的,因为我在脚本中为每次访问设置了较长的睡眠时间,所以服务器并没有发现我这种实验性的猥琐行为,目标博文阅读量成功地被我从 51次 刷到了 1000+。