很多数据网站,对于反爬虫都做了一定的限制,这个如果写过一些爬虫程序的小伙伴应该都深有体会,其实主要还是IP进了小黑屋了,那么为了安全,就不能使用自己的实际IP去爬取人家网站了,这个时候,就需要采用代理IP去做这些事情……
我们可以对比不同类型的代理的区别,根据代理的匿名程度,代理可以分为如下类别:
Python运行环境:Windows + python3.6
用到的模块:requests、bs4、json
如未安装的模块,请使用pip instatll xxxxxx进行安装,例如:pip install requests
这里,我只大概爬取西刺高匿代理50页的数据,当然了,爬100页,爬全部,都是可以的,就不多说了;
def run(self):
"""执行入口"""
page_list=range(1, 51)
with open("ip.json", "w") as write_file:
for page in page_list:
# 分页爬取数据
print('开始爬取第' + str(page) + '页IP数据')
ip_url=self.base_url + str(page)
html=self.get_url_html(ip_url)
soup=BeautifulSoup(html, 'html.parser')
# IP列表
ip_list=soup.select('#ip_list .odd')
for ip_tr in ip_list:
# 单条Ip信息
td_list=ip_tr.select('td')
ip_address=td_list[1].get_text()
ip_port=td_list[2].get_text()
ip_type=td_list[5].get_text()
info={'ip': ip_address, 'port': ip_port, 'type': ip_type}
# 先校验一下IP的有效性再存储
check_res=self.check_ip(info)
if check_res:
print('IP有效:', info)
self.json_data.append(info)
else:
print('IP无效:', info)
json.dump(self.json_data, write_file)
复制代码
爬取到的代理IP可能不能用,为了方便使用的时候,不报太多异常错误,所以需要先检测一下IP是否能正常使用,是否是有效代理IP,我这里列了三个网站,都可以很方便的检测IP地址是否能有效使用
def check_ip(self, ip_info):
"""测试IP地址是否有效"""
ip_url=ip_info['ip'] + ':' + str(ip_info['port'])
proxies={'http': 'http://' + ip_url, 'https': 'https://' + ip_url}
res=False
try:
request=requests.get(url=self.check_url, headers=self.header, proxies=proxies, timeout=3)
if request.status_code==200:
res=True
except Exception as error_info:
res=False
return res
复制代码
我这里就不搞那些花里胡哨的,我直接把所有有效的代理IP的json格式的数据存储到文件中,当然了,也可以存储到MongoDB或者MySQL数据库中,不管怎样存储,在使用的时候都是随机选取一个IP,更加方便快捷。
代码我已经上传了GitHub(GitHub源码地址),但是呢,作为一个热心的搬瓦工,为了方便部分人想偷懒,不直接去交友网站查看,我在这里也贴一下源码出来吧,如果有啥问题,最好还是去交友网站找我,请接码……
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
利用requests+bs4爬取国内高匿代理IP
author: gxcuizy
date: 2020-06-19
"""
import requests
from bs4 import BeautifulSoup
import json
class GetIpData(object):
"""爬取50页国内高匿代理IP"""
header={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'}
base_url='https://www.xicidaili.com/nn/'
check_url='https://www.ip.cn/'
json_data=[]
def get_url_html(self, url):
"""请求页面html"""
request=requests.get(url=url, headers=self.header, timeout=5)
html=False
if request.status_code==200:
html=request.content
return html
def check_ip(self, ip_info):
"""测试IP地址是否有效"""
ip_url=ip_info['ip'] + ':' + str(ip_info['port'])
proxies={'http': 'http://' + ip_url, 'https': 'https://' + ip_url}
res=False
try:
request=requests.get(url=self.check_url, headers=self.header, proxies=proxies, timeout=3)
if request.status_code==200:
res=True
except Exception as error_info:
res=False
return res
def run(self):
"""执行入口"""
page_list=range(1, 51)
with open("ip.json", "w") as write_file:
for page in page_list:
# 分页爬取数据
print('开始爬取第' + str(page) + '页IP数据')
ip_url=self.base_url + str(page)
html=self.get_url_html(ip_url)
soup=BeautifulSoup(html, 'html.parser')
# IP列表
ip_list=soup.select('#ip_list .odd')
for ip_tr in ip_list:
# 单条Ip信息
td_list=ip_tr.select('td')
ip_address=td_list[1].get_text()
ip_port=td_list[2].get_text()
ip_type=td_list[5].get_text()
info={'ip': ip_address, 'port': ip_port, 'type': ip_type}
# 先校验一下IP的有效性再存储
check_res=self.check_ip(info)
if check_res:
print('IP有效:', info)
self.json_data.append(info)
else:
print('IP无效:', info)
json.dump(self.json_data, write_file)
# 程序主入口
if __name__=='__main__':
# 实例化
ip=GetIpData()
# 执行脚本
ip.run()
复制代码
最后,小编想说:我是一名python开发工程师,
整理了一套最新的python系统学习教程,
想要这些资料的可以关注私信小编“01”即可(免费分享哦)希望能对你有所帮助
果您在网络上工作,您肯定知道信息的价值,因为可靠的信息将导致安全和无忧的系统。
当您考虑网络扫描时,您可能会想到一些人们买不起的昂贵的商业产品。您不需要拥有这样的程序来完成一项简单的工作,例如从同一本地网络中找出计算机上的开放端口。使用这些工具,您还可以准确地进行故障排除并诊断网络问题。
ISP使用网络监控和诊断工具进行日常网络管理操作,也使用流行的网络应用程序(如点对点系统)进行性能优化。有时,各种监控和诊断技术的高开销会限制工具的适用性。
我们已经收集了十个便携式网络扫描仪工具,这些工具将派上用场。
1.Advanced Port Scanner(高级端口扫描仪)
相关网址:http://www.advanced-port-scanner.com/cn/
Advanced Port Scanner
使用高级端口扫描程序,您将能够同时扫描数百个IP地址,但也能以最高速度扫描。该工具能够扫描网络计算机的端口,它可以查找和打开众所周知的TCP端口以及它们的计算机名称和地址。除此之外,该工具还允许您远程关闭或唤醒特定网络上的任何计算机。
当您需要在特定计算机上找到任何打开的端口时,高级端口扫描程序将成为您的首选工具。该工具适用于Windows XP,Windows 7和8.1两种版本的32位和64位。下载软件包包括便携式和安装版。如果您更喜欢在不安装机器的情况下运行该工具,那么在启动程序后,您肯定会选择便携式选项。
2.GFI LanGuard
相关网址:https://www.gfi.com/products-and-solutions/network-security-solutions/gfi-languard
GFI LanGuard
此网络安全扫描程序和修补程序管理工具充当您的虚拟安全顾问。该工具包括Windows,Mac OS和Linux的补丁管理。它还增加了智能网络和软件审计,计算机和移动设备的漏洞扫描以及免费支持等功能,因此您无需自行处理任何问题。
由于补丁管理对您的业务至关重要,并且网络安全漏洞通常是由于缺少网络补丁引起的,因此该工具将在暴露之前扫描并检测网络漏洞。它还将减少从网络中修补机器所需的时间。
GFI LanGuard还提供了对网络的详细分析,其中包括存在安全风险的应用程序和默认配置。您的网络正在进行超过60,000次漏洞评估。此工具通过漏洞检查数据库扫描您的操作系统,虚拟环境和所有应用程序。它将允许您分析网络安全状态并识别风险并解决在太晚 之前必须采取措施的方法。
3.PortScan&Stuff
相关网址:http://www.the-sz.com/products/portscan/
PortScan&Stuff
PortScan&Stuff是一款免费的便携式网络扫描工具,能够识别网络上所有现有的有源设备,还可以显示所有开放端口和其他信息,如MAC地址,主机名,HTTP,SMB,SMTP和iSCSI,以及SNMP服务。如果涉及更大的网络,该工具将使用多达100个线程,以加快性能。
此工具的一个非常有用的功能是“过滤器”功能,因为它可以根据用户的标准缩小扫描结果的范围。例如,用户可以在过滤器框中轻松键入3389,以查找已启用远程桌面协议的所有设备,以便远程登录而不会出现任何问题。
正如它的名字所说,该工具也能够执行更多操作,包括搜索设备,即使您不知道IP地址。您还可以在三种不同类型的ping中查找具有三个标准大小的Ping数据包的ping设备。使用此工具,您还可以通过下载和上传各种服务器的数据来加速测试您的Internet连接。
4.Nagios
相关网址:https://www.nagios.org/
Nagios
这是一个非常强大的监控工具,可确保您的所有关键系统,服务和应用程序始终正常运行。该工具提供的功能包括警报,报告和事件处理。这个应用程序的核心是Nagios Core,它包含核心监控引擎和基本的Web UI。除此之外,您还可以实现插件,以便监控应用程序,服务以及指标,图形,数据可视化附件,负载分配和MySQL数据库支持。
如果您想在不必安装的情况下试用程序并从零开始配置,建议您下载Nagios Xi并启用该工具的免费版本。Nagios XI是基于Nagios Core构建的预配置企业级版本。这是由一家商业公司打包的,该公司为您提供支持和更多功能,如高级报告和更多插件。
Nagios XI的免费版本适用于较小的环境,它将监控最多七个节点。安装并配置Nagios后,必须启动Web,UI,然后才能开始配置主机组和服务组。在该工具监视指定主机和服务的状态后,它将能够显示系统的运行状况。
Nagios的日志监控,管理和分析应用程序允许组织快速,轻松地查看机器生成的数据。该工具的Log Server旨在分析,收集和存储基于自定义规范的日志数据。它还将为用户提供对其网络基础架构中所有数据的深入了解。
5.MiTeC’s Network Scanner
相关网址:http://www.mitec.cz/netscan.html
MiTeC’s Network Scanner
MiTeC’s Network Scanner是一款免费的多线程ICMP,端口,IP,NetBIOS ActiveDirectory和SNMP扫描仪,具有各种高级功能。该工具面向系统管理员和热衷于计算机安全性的一般用户。该软件能够执行ping扫描,扫描UDP端口并打开TCP,资源共享和设备。对于具有SNMP功能的设备,程序将检测所有可用接口,并显示基本属性。除此之外,您还可以编辑结果以将结果保存到CSV或从CSV加载,以及打印网络设备列表。
任何部分的任何信息都可以导出到CVS。该工具还可以解析主机名,它将自动检测您的本地IP范围。该工具提供三种不同的选项:您可以自动扫描网络,可以扫描Active Directory,也可以根据用户定义的适配器使用检测到的范围。整个扫描过程不会花费太多时间,应用程序将显示每个IP地址以及更多有用的详细信息,包括操作系统,CPU及其描述,MAC地址,域和用户。
MiTeC的网络扫描仪可在所有Windows平台上运行,包括服务器版本。该工具可免费用于商业和个人用途。
该应用程序没有附带帮助手册,这可能是最重要的缺点,因为用户总是需要有关工具功能的更多文档。
6.OpenNMS
相关网址:https://www.opennms.org/en
OpenNMS
OpenNMS是一个高度集成的开源平台,专为构建网络监控解决方案而设计。该工具可以检测服务中断,并可以通过合成轮询来测量绘图和阈值的延迟。它通过可配置的服务监视器为许多应用程序提供支持。它可以从用户的角度远程监控应用程序。该工具将使用其灵活且可扩展的体系结构来扩展服务轮询和性能数据收集框架。OpenNMS包括用于iPhone,iPad或iPod Touch的客户端应用程序,可以随时随地访问,它使您能够查看节点,中断,警报以及添加监视接口。
登录到工具的Web UI后,您必须使用仪表板才能获得任何通知的快速快照视图。您可以从“状态”下拉菜单中向下钻取并获取有关任何部分的更多信息。完成后,“报告”部分将允许您生成报告,然后您可以通过电子邮件发送报告,也可以下载为PDF。
7.Capsa Free Network Analyzer
相关网址:https://www.colasoft.com/capsa-free/
这个免费软件工具面向学生,教师,计算机爱好者等。它是一种网络分析器,允许用户监控网络流量,解决网络问题并分析数据包。其功能包括支持300多种网络协议,以及创建和自定义协议的能力。
该工具是用于以太网监控,分析和故障排除的必备网络分析仪。它将为您提供丰富的经验,以学习如何监控网络活动,查明网络问题,提高网络安全性等。这是学习协议和网络技术的学生的理想选择。
该工具将为您提供自己的仪表板,所有重要参数将位于一个位置。它可以记录您的网络配置文件,设置分析目标并执行自定义分析。
8.PRTG Network Monitor Freeware
相关网址:https://www.paessler.com/download/prtg-download
PRTG Network Monitor Freeware
此工具使用各种协议(如WMI,Netflow和SNMP)监视网络可用性和网络使用情况。这是一个功能强大的工具,能够提供易于使用的界面,基于网络和Android和iOS的应用程序。PRTG提供全面的网络监控,为应用监控,QoS监控,SLA监控和虚拟服务器监控提供超过170种传感器类型。
其灵活的警报功能包括9种不同的通知方法,限制警报,状态警报,阈值警报,警报计划和条件警报。该工具具有深入的报告功能,能够以HTML / PDF格式,预定义报告,报告模板和计划报告创建报告。您应该知道此工具的免费软件版本仅限于10个传感器。
启动该工具后,您必须直接进入配置向导才能开始使用。这将指导您完成启动和运行应用程序所需的基本配置设置,它将包括向监视器添加服务器以及您必须使用的所需传感器。
9.The Dude
相关网址:https://mikrotik.com/thedude
The Dude
Dude网络监视器是MikroTik的新应用程序,它可以显着提高您管理网络环境的方式的质量。这将自动扫描指定子网内的所有设备,它将绘制网络的布局图,它将监视您设备的服务,并在您的某些服务出现问题时提醒您。
该工具提供自动网络发现和布局,并能够发现任何类型或品牌的设备。它包括设备的SVG图标,它还支持自定义图标和背景。该应用程序易于安装,非常易于使用。更重要的是,它允许您绘制自己的地图并添加自定义设备,还可以直接访问用于设备管理的远程控制工具。
它支持远程Dude服务器和本地客户端,它在Linux Wine环境,Windows和MacOS Darwine中运行。
10.Xirrus Wi-Fi Inspector
相关网址:https://www.riverbed.com/products/xirrus/index.html
Xirrius Wi-Fi Inspector是一种工具,可用于搜索Wi-Fi网络,管理和排除连接故障,验证Wi-Fi覆盖范围,定位Wi-Fi设备以及检测恶意接入点。
它提供有关其检测到的每个网络的详细信息,包括网络SSID,信号强度,网络模式,加密类型,频率和信道。
该工具的下载量超过100万,已成为帮助全球各地组织快速,轻松地了解其网络的标准。该计划旨在提供无线网络状态的实时监控。该工具将确保您获得无线网络提供的最高性能。
Wi-Fi Inspector的UI包括各种模式,例如显示最近网络的雷达视图,所有网络及其详细信息的视图以及历史视图。
该工具被许可为Windows免费软件,所有软件用户都可以免费下载。
我们提供了这些工具,试图让您的生活更轻松。他们都将设法监控设备,服务,端口和协议,他们还将分析网络上的流量。全部检查,我们向您保证,您将在上述工具中找到至少一颗或两颗宝石。
最近需要在web项目中显示监控视频,采用了webrtc+webrtc-streamer+coturn的方案实现,能够在公网上做很低的延时,对于实时监控视频有很好的效果,是目前来讲比较好的一个选择方案。
1、webrtc 用于视频流的显示。
2、webrtc-streamer负责去监控视频主机(这里多数是NVR或DVR)去拉取RSTP视频流,并转发到Webrtc中进行显示。
3、coturn用于webrtc与webrtc-streamer之间的通信穿透服务,主要作用是穿透做NAT穿透,让双方找到能互相找到。
网络逻辑结构图
一、webrtc-streamer安装
这里采用的是CentOS 7系统,直接采用的Docker安装,关于Docker安装可以参考《Kubernetes安装记录》的docker部分。
docker pull mpromonet/webrtc-streamer
docker run -itd -p 8000:8000 --name webrtc-streamer mpromonet/webrtc-streamer -s120.92.19.150:3478 -tnoka:noka@120.92.19.150:3478
这里后面的-t和-s参数分别指向cotum的strun和tun服务,这里同内一定要用自己搭建的穿透服务,webrtc-streamer内置的服务是指向goole提供的一个服务,国内访问及其不稳定,关于cotum的安装请参照官网。这里启动好以后,就可以通过浏览器访问8000端口的服务了,这里可以通过以下地址来验证视频流服是否成功。
http://ip:8000/webrtcstreamer.html?rtsp://admin:admin@ip:554/Streaming/Channels/101
如果上面的地址能播放视频,说明配置成功了,地址后面的参数是视频流的地址。
二、web端视频显示代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- webrtc公用库-->
<script src="/js/adapter.js"></script>
<!-- webrtc-streamer调用库,来自webrtc-streamer-->
<script src="/js/webrtcstreamer.js"></script>
</head>
<body>
<!-- 视频显示部分 -->
<div id="play_div"></div>
<script>
var webRtcServerList=[];//视频流服务对象部分
var urls=[
'rtsp://admin:HUAN1415@192.168.1.106:554/Streaming/Channels/102',//视频流地址
'rtsp://admin:HUAN1415@210.201.225.44:554/Streaming/Channels/202'//视频流地址
];
var rsurl='http://210.201.225.42:8000/';//webrtc-streamer服务地址
//---------创建视频播放界面--------------------------------------------------------
function plays(idx){
var videoelt=document.createElement("video");//创建一个播放器
var vi_tag='videoTag_'+idx;//播放器的id
videoelt.id=vi_tag;//播放器id
videoelt.muted=true;
videoelt.width=500;
videoelt.height=600;
videoelt.controls=true;//开启进度条
document.getElementById ("play_div").appendChild(videoelt);//添加播放器到界面中
var webRtcServer=new WebRtcStreamer(vi_tag,rsurl);//创建webrtc流对象
//连接视频,参数1 视频地址,参数2 音频地址(这里没有),参数3 连接参数(这里采用的是tcp,120秒超时等)
webRtcServer.connect(urls[idx],undefined,"rtptransport=tcp&timeout=120&width=320&height=0");
webRtcServerList[idx]=webRtcServer;//缓存视频流对象
}
//----------页面退出时关闭播放流---------------------
window.onbeforeunload=function() {
for(var i=0;i<webRtcServerList.length;i++){
webRtcServerList[i].disconnect();
}
}
//---------初始化加载视频----------------------------
window.onload=function() {
for(var i=0;i<urls.length;i++){
plays(i);
}
}
</script>
</body>
</html>
这样就完成了整个项目实现,这里如果视频没有播放成功,最有可能是穿透服务的问题,需要检查穿透服务。
*请认真填写需求信息,我们会在24小时内与您取得联系。