这里先介绍刷一个网站的访问量的实现方法,我在思考用多线程一次并发去访问自己的网站的所有博客,或者是开几十个线程并发访问自己的一个网站的访问量,快速提升网站博客的阅读数。
1、HTTP请求方式
如下表:
GET | 向Web服务器请求一个文件 |
POST | 向Web服务器发送数据让Web服务器进行处理 |
PUT | 向Web服务器发送数据并存储在Web服务器内部 |
HEAD | 检查一个对象是否存在 |
DELETE | 从Web服务器上删除一个文件 |
CONNECT | 对通道提供支持 |
TRACE | 跟踪到服务器的路径 |
OPTIONS | 查询Web服务器的性能 |
说明:
主要使用到“GET”和“POST”。
2、伪装成浏览器
HTTP是基于请求和应答机制的--客户端提出请求,服务端提供应答。urllib2用一个Request对象来映射你提出的HTTP请求,在它最简单的使用形式中你将用你要请求的
地址创建一个Request对象,通过调用urlopen并传入Request对象,将返回一个相关请求response对象,这个应答对象如同一个文件对象,所以你可以在Response中调用.read()。
but
在HTTP请求时,允许你做额外的两件事。首先是你能够发送data表单数据,其次你能够传送额外的关于数据或发送本身的信息("metadata")到服务器,此数据作为HTTP的"headers"来发送。接下来让我们看看这些如何发送的吧。
浏览器确认自己身份是通过User-Agent头,当你创建了一个请求对象,你可以给他一个包含头数据的字典。下面的例子发送跟上面一样的内容,但把自身模拟成Internet Explorer。
import urllib
import urllib2
url = 'http://www.pythontab.com'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'name' : 'Michael Foord',
'location' : 'pythontab',
'language' : 'Python' }
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()
#这里伪装陈成了谷歌浏览器
3、举一个香蕉
要刷浏览量的我的博客的url:https://blog.csdn.net/zhuangmezhuang/article/details/82379904
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib2 # Python中的cURL库
import time # 时间函数库,包含休眠函数sleep()
url = 'https://blog.csdn.net/zhuangmezhuang/article/details/82379904' # 希望刷阅读量的文章的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=monline_3_dg&wd=python%20%E6%AD%A3%E5%88%99%E8%A1%A8%
# E8%BE%BE%E5%BC%8F%E7%BB%83%E4%B9%A0&oq=urllib2.request%20%E5%8F%82%E6%95%B0&rsv_pq=fd0f38e40000db8b&rsv_t=6ec2HIbgWth
# uw3DWeXZSp8H8sFOXlNADvNuj1cCIHdsA6JxxgKiMJ3EWA1cwZTGowTpL&rqlang=cn&rsv_enter=0&inputT=18403&rsv_sug3=131&rsv_sug1=70
# &rsv_sug7=101&rsv_sug4=19841' # 伪装成是从baidu.com搜索到的文章
refererData = 'https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&tn=84053098_3_dg&wd=python%20requests&oq=python' \
'%2520%25E6%25AD%25A3%25E5%2588%2599%25E8%25A1%25A8%25E8%25BE%25BE%25E5%25BC%258F%25E7%25BB%2583%2' \
'5E4%25B9%25A0&rsv_pq=dbe2844f0001ed18&rsv_t=b76cY%2BoWof42xOpPNnC%2BvDfeZveYjxd2wlcs98fUAK0rIULU32JMo' \
'U1bw1bGzAniOdtkYQ&rqlang=cn&rsv_enter=1&rsv_sug3=11&rsv_sug1=10&rsv_sug7=100&rsv_sug2=0&prefixsug=' \
'python%2520req&rsp=0&inputT=3060&rsv_sug4=3411'
data = '' # 将GET方法中待发送的数据设置为空
headers = {'User-Agent': user_agent, 'Referer': refererData} # 构造GET方法中的Header
count = 0 # 初始化计数器
request = urllib2.Request(url, data, headers) # 组装GET方法的请求
while True: # 想停不存在的
rec = urllib2.urlopen(request) # 发送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)
# print page # 打印页面信息,这句代码永远不会执行
之后就可以刷一波浏览器的访问量了,如果后续我把多线程并发访问写好了,还会在提一波。
不说了,自己先刷一波。