一、安装speedtest-cli
speedtest-cli是一个用python编写的轻量级Linux命令行工具,在Python2.4至3.4版本下均可运行。它基于Speedtest.net的基础架构来测量网络的上/下行速率。安装speedtest-cli很简单——只需要下载其Python脚本文件。
[root@localhost temp]# wget https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
[root@localhost temp]# chmod a+rx speedtest_cli.py
[root@localhost temp]# mv speedtest_cli.py /usr/local/bin/speedtest-cli
[root@localhost temp]# chown root:root /usr/local/bin/speedtest-cli
也可以在自己电脑上下载好 speedtest_cli.py 然后上传到服务器上。
二、使用speedtest-cli测试网速
使用speedtest-cli命令也很简单,它不需要任何参数即可工作。
[root@localhost temp]# speedtest-cli
输入这个命令后,它会自动发现离你最近的Speedtest.net服务器(地理距离),然后打印出测试的网络上/下行速率。
[root@localhost temp]# speedtest-cli
Retrieving speedtest.net configuration…
Retrieving speedtest.net server list…
Testing from China Telecom (219.135.214.145)…
Selecting best server based on latency…
Hosted by CTM Internet Services (Macau) [106.48 km]: 55.974 ms
Testing download speed………………………………….
Download: 3.15 Mbit/s
Testing upload speed…………………………………………..
Upload: 0.58 Mbit/s
测试结果说明:上行为 0.58Mbit/s 下行为 3.15 Mbit/s
② Python爬虫如何避免爬取网站访问过于频繁
一. 关于爬虫
爬虫,是一种按照一定的规则自动地抓取互联网信息的程序。本质是利用程序获取对我们有利的数据。
反爬虫,从不是将爬虫完全杜绝;而是想办法将爬虫的访问量限制在一个可接纳的范围,不要让它过于频繁。
二. 提高爬虫效率的方法
协程。采用协程,让多个爬虫一起工作,可以大幅度提高效率。
多进程。使用CPU的多个核,使用几个核就能提高几倍。
多线程。将任务分成多个,并发(交替)的执行。
分布式爬虫。让多个设备去跑同一个项目,效率也能大幅提升。
打包技术。可以将python文件打包成可执行的exe文件,让其在后台执行即可。
其他。比如,使用网速好的网络等等。
三. 反爬虫的措施
限制请求头,即request header。解决方法:我们可以填写user-agent声明自己的身份,有时还要去填写origin和referer声明请求的来源。
限制登录,即不登录就不能访问。解决方法:我们可以使用cookies和session的知识去模拟登录。
复杂的交互,比如设置“验证码”来阻拦登录。这就比较难做,解决方法1:我们用Selenium去手动输入验证码;方法2:我们用一些图像处理的库自动识别验证码(tesserocr/pytesserart/pillow)。
ip限制。如果这个IP地址,爬取网站频次太高,那么服务器就会暂时封掉来自这个IP地址的请求。 解决方法:使用time.sleep()来对爬虫的速度进行限制,建立IP代理池或者使用IPIDEA避免IP被封禁。
③ linux测试网速的工具
1、fast
是Netflix提供的一项服务,它不仅可以通过命令行来使用,而且可以直接在Web端使用:fast.com,我们可以通过以下命令来安装这个工具:
$ npm install --global fast-cli
不管是网页端还是命令行,它都提供了最基本的网络下载测速。命令行下最简单的使用方法如下:
$ fast
93 Mbps ↓
从以上结果可以看出,直接使用fast命令的话,将只返回网络下载速度。如果你也想获取网络的上传速度,则需要使用-u选项。
$ fast -u
⠧ 81 Mbps ↓ / 8.3 Mbps ↑
2、speedtest
是一个更加知名的工具。它是用Python写成的,可以使用apt或pip命令来安装。你可以在命令行下使用,也可以直接将其导入到你的 Python
项目,使用的时候,可以直接运行speedtest命令即可:
$ speedtest
Retrieving speedtest.net configuration...
Testing from Tencent cloud computing (140.143.139.14)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Henan CMCC 5G (Zhengzhou) [9.69 km]: 28.288 ms
Testing download
speed................................................................................
Download: 56.20 Mbit/s
Testing upload
speed......................................................................................................
Upload: 1.03 Mbit/s
从运行结果可以看出,speedtest命令将直接提供上传/下载速率,测试的过程也是挺快的。你可以编写一个脚本来调用这个命令,然后定期进行网络测试,并在结果保存在一个文件或数据库,这样你就可以实时跟踪你的网络状态。
3、iperf
是一个网络性能测试工具,它可以测试TCP和UDP带宽质量,可以测量最大TCP带宽,具有多种参数和UDP特性,可以报告带宽,延迟抖动和数据包丢失。利用iperf这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。
这个工具不仅仅在Linux系统下可以用,在Mac和Windows系统同样可以使用。
如果你想测试网络带宽,则需要两台电脑。这两台电脑需要处于同样的网络,一台作为服务机,另一台作为客户机,并且二者必须都要安装
iPerf,可以通过如下命令获取服务器的IP地址:
$ ip addr show | grep inet.*brd
inet 192.168.242.128/24 brd 192.168.242.255 scope global dynamic
noprefixroute ens33
之后,我们再在服务机上启动iperf工具:
$ iperf -s
然后,我们就可以等待客户机的接入了。客户机可以使用以下命令来连上服务机:
$ iperf -c 192.168.242.128
通过几秒钟的测试,它就会返回网络传输速率及带宽。