`

一个简单的python代理服务器源码分析

阅读更多
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

此为开源代码,可以google上下载,项目名为:PySocks-1.0a4

下面为其中文件之一的IPv4_Tools.py:

"""IPv4_Tools - IPv4 helper functions module written in Python

Copyright (C) 2001 Xavier Lagraula
See COPYRIGHT.txt and GPL.txt for copyrights information.

This module provides a small set of classes and short functions to ease for
IPv4 protocols handling:
- is_routable: checks whether an IP address is routable or not (RFC 1918).
- is_port: checks whether an integer is a valid port number (1-65535)
"""

def is_routable(address):
"""def is_routable(address)

This function returns if a given IPv4 address is routable or not.
Parameters:
- address: IPv4 address - string - format: aaa.bbb.ccc.ddd
Return value:
- 0: address is not routable
- 1: address is routable

Routable addresses are defined as not pertaining to the following:
127.0.0.0 - 127.255.255.255 (127/8 prefix)
10.0.0.0 - 10.255.255.255 (10/8 prefix)
172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)"""

# Splitting the address in its 4 components.
first, second, junk1, junk2 = address.split('.')
# Testing the address against the given intervals.
if (first in ['10', '127']
or (first == '172' and second >= '16' and second <= '31')
or ((first, second) == ('192', '168'))):
return 0
return 1

def is_port(port):
"""def is_port(port)

This functions returns if a given port is valid or not.
Parameters:
- port: integer
Return value:
- 0: port is a valid port
- 1: port is not a valid port

Valid ports are defined as in the interval 1-65535."""
return (port > 0) and (port < 65536)

注意两个"""之间的部分为注释,类似与C++中的/*和*/


除掉注释,此代码只有如下几行:

def is_routable(address):

first, second, junk1, junk2 = address.split('.')

if (first in ['10', '127']
or (first == '172' and second >= '16' and second <= '31')
or ((first, second) == ('192', '168'))):
return 0
return 1

def is_port(port):

return (port > 0) and (port < 65536)

这几行代码很简单:函数is_routable主要是检测address是否可路由,声明四个变量分别得到IPv4地址的四个byte,然后判断各个byte是否符合要求,符合要求就返回1,否则返回0;函数is_port返回port是否为合格的端口号。

分享到:
评论

相关推荐

    python cookbook(第3版)

    2.19 实现一个简单的递归下降分析器 2.20 字节字符串上的字符串操作 第三章:数字日期和时间 3.1 数字的四舍五入 3.2 执行精确的浮点数运算 3.3 数字的格式化输出 3.4 二八十六进制整数 3.5 字节到大整数的...

    Python入门网络爬虫之精华版

    这种情况最好的办法就是维护一个代理IP池,网上有很多免费的代理IP,良莠不齐,可以通过筛选找到能用的。对于“频繁点击”的情况,我们还可以通过限制爬虫访问网站的频率来避免被网站禁掉。 proxies = {'...

    网络图片爬取crawwormpicture

    图片爬取工具(CrawlWorm Picture)是一款专为使用Windows系统的用户打造的一个专业网络图片爬取工具,只需要输入自己需要抓取的网站地址,然后设置搜索参数,软件就会开始分析网页源码获取网站的图片资源,可同时执行...

    基于电商网络的数据采集与分析毕业论文(33页12525字数).docx

    本论文将使用Python语言,在PyCharm开发环境中去编写爬虫程序,通过selenium启动代理浏览器,在搜索文本框中输入搜索关键字,从Web服务器调用Web爬虫模块,接着爬虫模块检查Internet连接,如果网络连接成功,就处理...

    MySQLMTOP数据库监控工具 2.2.zip

    MySQLMTOP是一个由Python PHP开发的开源MySQL企业数据库监控工具。系统由Python实现多进程数据采集和告警,PHP实现WEB展示和管理。MySQL服务器无需安装任何Agent,只需在监控WEB界面配置相关数据库信息,启动监控...

    精通Odoo开发和使用

    5.3 一个简单的演示模块 33 5.3.1 controllers 33 5.3.2 views 33 5.3.3 models 35 5.3.4 security 37 5.3.5 美化网页 38 5.4 加分项: 通过 pgadmin3 来查看数据库 39 5.4.1 安装 39 5.4.2 连接服务器 39 5.4.3 图形...

    毕业设计&课程设计-MySQL项目管理工具使用Maven、版本控制工具使用GIT.zip

    MySQL项目管理工具使用...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。

    MySQLMTOP数据库监控系统-其他

    5、直观管理所有MySQL服务器MySQL MTOP提供一个基于Web的界面,可令您全面深入地了解数据库性能、可用性、关键活动等;直观地查看一台服务器、自定义的应用组或所有服务器。一组丰富的实时图形和历史图形将帮助您...

    MySQL 5.1中文手冊

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    MySQL 5.1参考手册 (中文版)

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    mysql官方中文参考手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    MYSQL中文手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用...

    MySQL 5.1参考手册中文版

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用...

    MySQL 5.1参考手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    MySQL5.1参考手册官方简体中文版

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    MySQL 5.1官方简体中文参考手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    MySQL MTOP数据管理最新官方版

    MySQL MTOP数据管理最新官方版,MySQL MTOP是一个由Python+PHP开发的开源MySQL企业监控系统。系统由Python实现多进程数据采集和告警,PHP实现WEB展示和管理。MySQL服务器无需安装任何Agent,只需在监控WEB界面配置...

    mysql5.1中文手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. ...

    疯狂JAVA讲义

    学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...

Global site tag (gtag.js) - Google Analytics