Python制作刷网页流量工具
作者:凌霄_ 发布时间:2021-10-21 00:23:28
标签:Python,刷流量
准备
必须环境:
Python3
开始
先实现一个简单的版本,直接上代码:
import urllib.request
import urllib.error
#创建get方法
def get(url):
code=urllib.request.urlopen(url).code
return code
if __name__ == '__main__':
#设置一些基本属性
url = "http://shua.jb51.net"
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36"
headers = {'User-Agent':user_agent}
req = urllib.request.Request(url, headers=headers)
#记录次数
i = 1
while 1:
code = get(url)
print('访问:'+str(code))
i = i+1
简单粗暴,刷的只是 pv,ip 没变,容易被搜索引擎发现,下面我们来改进一下
增加代理功能
给 get 方法添加以下代码:
random_proxy = random.choice(proxies)
proxy_support = urllib.request.ProxyHandler({"http":random_proxy})
opener = urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)
修改一下主方法:
if __name__ == '__main__':
url = "http://shua.jb51.net"
#添加代理列表,可以自行去百度获取
proxies = ["124.88.67.22:80","124.88.67.82:80","124.88.67.81:80","124.88.67.31:80","124.88.67.19:80","58.23.16.240:80"]
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36"
headers = {'User-Agent':user_agent}
req = urllib.request.Request(url, headers=headers)
i = 1
while 1:
#添加参数
code = get(url,proxies)
print('第'+str(i)+'次代理访问:'+str(code))
i = i+1
这样差不多了,不过有个 bug ,如果页面打不开了或者代理失效了,程序就自动结束了,接下来我们添加异常处理功能
异常处理
定义 mail 方法 ,用来发邮件提醒
def mail(txt):
_user = "你的账号"
_pwd = "你的密码"
_to = "收件账号"
msg = MIMEText(txt, 'plain', 'utf-8')
#标题
msg["Subject"] = "代理失效!"
msg["From"] = _user
msg["To"] = _to
try:
#这里我用的qq邮箱
s = smtplib.SMTP_SSL("smtp.qq.com", 465)
s.login(_user, _pwd)
s.sendmail(_user, _to, msg.as_string())
s.quit()
print("Success!")
except smtplib.SMTPException as e:
print("Falied,%s" % e)
然后我们修改一下主方法:
if __name__ == '__main__':
url = "http://shua.jb51.net"
proxies = ["124.88.67.22:80","124.88.67.82:80","124.88.67.81:80","124.88.67.31:80","124.88.67.19:80","58.23.16.240:80"]
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36"
headers = {'User-Agent':user_agent}
req = urllib.request.Request(url, headers=headers)
i = 1
while 1:
try:
code = get(url,proxies)
print('第'+str(i)+'次代理访问:'+str(code))
i = i+1
except urllib.error.HTTPError as e:
print(e.code)
#添加mail方法
mail(e.code)
except urllib.error.URLError as err:
print(err.reason)
#添加mail方法
mail(err.reason)
完成!
结语
代码只有短短的 50 行,程序还可以改进:
例如:代理列表自动获取,添加界面,扩展下多线程等等
最后给再给大家分享一个其他小伙伴的作品
import urllib2
import timeit
import thread
import time
i = 0
mylock = thread.allocate_lock()
def test(no,r):
global i
url = 'http://blog.csdn.net'
for j in range(1,r):
req=urllib2.Request(url)
req.add_header("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)")
file = urllib2.urlopen(req)
print file.getcode();
mylock.acquire()
i+=1
mylock.release()
print i;
thread.exit_thread()
def fast():
thread.start_new_thread(test,(1,50))
thread.start_new_thread(test,(2,50))
fast()
time.sleep(15)
经测试,超过两个线程以上服务器就会出现503错误,所以2个线程刚好
0
投稿
猜你喜欢
- python如何跳过异常继续执行下面有两种解决方法第一种是类似if…else…;另外一种是使用语
- 【OpenCV】⚠️高手勿入! 半小时学会基本操作 ⚠️ 对象测量概述OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大.
- 看了网站LOGO设计规范的思考的第一部分关于logo设计基础,现在接着来谈谈网络LOGO的设计。四、网络LOGO的设计 古代皇家的纹章,有条
- 简单的2048小游戏不多说,直接上图,这里并未实现GUI之类的,需要的话,可自行实现:接下来就是代码模块,其中的2048游戏原来网络上有很多
- 因一些特殊需求需要以参数的形式获取字典 * 定的值,网上搜了一下并没有特别好的实现(并没有太认真去找~),所以自己实现了一个,以供大家参考:)
- PHP生成桌面快捷方式就是这么的简单,大家生成的时候改下你要生成的网站即可。dianji.html代码:<a href="a
- 对比起Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制。由于 Session 是以
- 我插入Mysql5的中文一直是乱码。但是直接使用mysqlAdmin,EMS等工具插入DB就不是乱码。而且我还可以使用程序正常地读出来。原因
- 本程序属于一种特别的方法。使用范围比较有限,而且有一定的危险性。借鉴了asp后门里的一些方法。由于读取某IP的网卡MAC地址本程序通过调用a
- 判断某一个表的记录总数,对于一个开发者来说是最再常见不过的事,我想大家都常用的作法就是:以下为引用的内容:select count(*) f
- 本文实例讲述了django框架中间件原理与用法。分享给大家供大家参考,具体如下:中间件:轻量级,介于 request和response之间的
- 5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别。URL和路由5.0的URL访问不再支持普通URL模式,
- 一个SELECT查询中的LIKE语句来执行这种查询,尽管这种方法可行,但对于全文查找而言,这是一种效率极端低下的方法,尤其在处理大量数据的时
- Python没有类似于Java的private关键字, 但也可以为类定义私有属性. 只需将属性命名变为以__开头, 例如 __field.示
- 五一在家写的,和大家分享,支持所有浏览器,添加了左侧菜单点击变色效果<!DOCTYPE html PUBLIC "-//W3
- 张同学 10.4号开始发视频,视频的点赞量一直很高,11.17 号的视频达到了顶峰,收获 250w 个赞,之后关注量也开启了暴涨。所以挖掘
- google找到这样一个解决方法: 在上传控件中插入了值,就只能通过form的reset功能来清空了,但是form里面其他的值也被reset
- 报错现象File "<string>", line 1SyntaxError: unexpected EOF
- 通过锁机制,可以实现多线程同时对某个表进行操作。如下图所示,在某个时刻,用户甲、用户乙、用户丙可能会同时或者先后(前面一个作业还没有完成)对
- 很有创意的鼠标指针风筝,看起来非常有意思。在网络上看到的,一下也想不起来是那里的了,所以特别说一下图片是来自网络的,版权归作者所有。