
我们先来了解下Python中高层次的数据结构,动态类型和动态绑定,使得它非常适合于快速应用开发,也适合于作为胶水语言连接已有的软件部件。用Python搭建一个可用的代理IP池其实并不难的。下面我们来看看搭建一个可用的代理IP池的代码,可以分为以下的模块:
1、ProxyGetter,代理获取的相关代码,可以抓取网站上的免费代理,经测试每天更新的可用代理只有六七十个,当然也支持自己扩展代理接口。
2、Api,api接口相关代码,目前api是由Flask实现,代码也非常简单。客户端请求传给Flask,Flask调用ProxyManager中的实现,包括get/delete/refresh/get_all。
3、Util,存放一些公共的模块方法或函数,包含GetConfig:读取配置文件configini的类,ConfigParse:集成重写ConfigParser的类,使其对大小写敏感,Singleton:实现单例,LazyProperty:实现类属性惰性计算。
4、DB,数据库相关代码,目前数据库是采用SSDB。代码用工厂模式实现,方便日后扩展其他类型数据库。
5、Schedule,定时任务相关代码,现在只是实现定时去刷新代码,并验证可用代理,采用多进程方式。
6、Manager,get/delete/refresh/get_all等接口的具体实现类,目前代理池只负责管理proxy,日后可能会有更多功能,比如代理和爬虫的绑定,代理和账号的绑定等等。
7、其他文件,配置文件:Configini,数据库配置和代理获取接口配置,可以在GetFreeProxy中添加新的代理获取方法,并在Configini中注册即可使用。大家平常搭建一个可用的代理IP池也是按照这些的方法吗?如果不是,也可以参考下的。如果想快捷方便有效可以使用不可用
以前是有这样的工具,它会通过常用协议去刺探设备类型。比如windows的版本,计算机名等。现在不知道还有没有这样的工具,搜索一下看。
哦。这个应该相当容易了。因为相机是专业设备。所以通常会有一个控制协议。因为是专业的,所以这个socket应该是加密的。 你只需要连接上后,随便发一个命令,如果被断开。很可能就是这个相机了。
另外相机通常都是有MAC地址的。如果你发现它在你预计的MAC地址范围内,也可以知道是它。 相机是专业抓拍的。通常不会放在互联网上,应该是局域网。你可以排除局域网上的其它计算机,自然了也就知道哪些是相机了。
这些都不是难题。你首先扫描所有的IP地址。再扫描它们的端口数量。如果端口数量多通常是计算机,如果端口只有1-2个就是专业设备。扫描不到的,应该就是计算机啦。
试试,并不难。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,统一使用两个IANA分配的端口:67(服务器端),68(客户端)。主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息。
option字段
DHCP报文中的Options字段可以用来存放普通协议中没有定义的控制信息和参数。如果用户在DHCP服务器端配置了Options字段,DHCP客户端在申请IP地址的时候,会通过服务器端回应的DHCP报文获得Options字段中的配置信息。
获取IP地址过程
实验使用的linux 主机由两个网络接口,其中ens33使用DHCP获取IP地址,ens37使用静态IP地址;因此需要使用ens33来发送数据包。
Change_MACpy用于MAC地址与Bytes类型相互转换。
DHCP_Discoverpy用于发送DHCP Discover报文;其中GET_MACpy见ARP章节。
DHCP_Requestpy用于发送DHCP Request报文。
DHCP_FULLpy用于完成DHCP Client与DHCP Server的报文交互
Wireshark对远程linux主机抓包,结果如下
客户端以广播发送DHCP Discover包,其中报文 *** 作类型为1(请求报文),DHCP客户端的MAC地址设置为00:0c:29:03:a1:08,option53设置报文类型为Discover,option55(请求选项列表)中包含请求的参数。
服务器以单播向客户端回复信息,其中报文 *** 作类型为2(应答报文),分配给客户端的IP为192168160146,option 53设置报文类型为offer,Option 54设置服务器标识为192168160254,其他option为客户端请求列表的应答。
值得注意的是,交互的四个报文中Transaction ID均为0x00000000,表明是同一次DHCP交互报文。
实验拓扑如下,linux向R2发送IP分片,并在R2接口上抓包。
ICMP包校验和是连通头部信息加数据本身一起进行校验(ip包只需要校验头部信息)而Scapy自动添加ICMP校验和时只会计算第一分片的数据,当三个分片到达目标主机进行重组后校验不通过,将重组后的数据包丢弃;因此在手动设置IP分片时,需要手动将校验和添加入ICMP首部中。
由于手动计算校验和过程较复杂,可通过wireshark抓包,可以获取到正确的校验和。
抓包结果如下,由于单个数据包长度超过MTU,系统自动将ICMP request包分片发送,同样的ICMP reply系统也进行了分片。
当主机发送分组的长度超过MTU又不可以分片(IP flags位DF置1),则这个分组丢弃,并用ICMP差错报文向主机报告。
参考:( >
ip = '12358230224'
real_ip = open('aatxt','r')read()
if ip == real_ip:
print 'OK'
else:
print 'not'
#open('','r')加个'r'表示读取
以上就是关于python 爬虫 ip池怎么做全部的内容,包括:python 爬虫 ip池怎么做、python 可以伪造 ip 发送 http 请求吗、python怎样获取连接的IP的设备信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)