`

一个简单的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网络爬虫源码

    Scrapy是一个用Python编写的开源框架,专门用于构建网络爬虫项目。它提供了完整的解决方案,包括数据抓取、处理、存储等多个环节,使得开发者可以专注于编写爬虫逻辑,而无需关注底层实现的细节。Scrapy的核心组件...

    python服务器监控系统源码数据库演示.zip

    该压缩包文件“python服务器监控系统源码数据库演示.zip”包含了一个基于Python的服务器监控系统的完整源码和数据库,这是一份毕业设计项目,已经获得了教师的高度评价。它使用了Django框架,这是一个流行的Python ...

    python进销存系统源码

    Python进销存系统源码是一种基于Python编程语言开发的软件,用于管理企业的进货、销售和库存等业务流程。这样的系统通常包含多个模块,用于跟踪商品的流动,优化库存管理,提高运营效率。以下是对该系统可能涉及的...

    作品提交python爬虫源码实例

    【Python爬虫源码实例——京东评论爬虫详解】 在Python编程领域,网络爬虫是一项重要的技术,它能帮助我们自动地从互联网上获取大量数据。在这个“python京东评论爬虫”的实例中,我们将深入探讨如何利用Python进行...

    Python-一个简单的Python爬虫

    **Python-一个简单的Python爬虫** 在Python编程领域,Web爬虫是一种常用的技术,用于自动地从互联网上抓取信息。Python因其丰富的库支持和简洁的语法,成为了编写爬虫的首选语言。在这个主题中,我们将深入探讨如何...

    Python网络爬虫+源码.zip

    本资源的"用Python写网络爬虫+源码"文件,提供了实践案例,对于初学者而言,可以按照章节逐步学习,每个实例都是一个完整的爬虫项目,有助于理解和掌握Python爬虫的各个环节。通过这些实例,你可以亲自编写、运行...

    2021年9个常用的python爬虫源码

    本资源包含的是“2021年9个常用的python爬虫源码”,这将帮助初学者快速入门,同时也为经验丰富的开发者提供了参考和灵感。 1. **基础爬虫框架** - Python中常见的爬虫框架有BeautifulSoup、Scrapy和Requests+...

    http代理服务器的实现(程序).rar

    在这个“http代理服务器的实现(程序).rar”压缩包中,我们很可能会找到一个实现了HTTP代理功能的源代码程序,这对于学习网络编程、理解HTTP协议以及代理服务器的工作原理是非常有价值的。 首先,我们要了解HTTP协议...

    python实战项目源码18 BBS论坛源码(毕业设计)

    本项目是基于Python实现的一个BBS(Bulletin Board System,电子公告板)论坛源码,非常适合用于学习和实践Python Web开发技术,特别是对于那些寻求毕业设计项目的同学来说,这是一个很好的起点。 在BBS论坛源码中...

    基于C++的http代理服务器的实现(包含程序源码).zip

    5. 日志管理模块:记录代理服务器的操作日志,便于后续的分析和排查问题。 具体到本压缩包中的文件,包含了完整的程序源码,开发者可以使用这些代码来搭建自己的HTTP代理服务器。此外,还可能包含了编译环境配置...

    基于Python新冠疫情数据爬虫分析展示系统源码.zip

    - **Flask**或**Django**:作为Web框架,用于构建一个简单的后台服务器,展示分析结果或提供API接口。 - **前端技术**:可能结合HTML、CSS和JavaScript构建用户界面,用以交互式展示数据。 6. **版本控制**: - ...

    Python美甲预约系统源码.zip

    【Python美甲预约系统源码】是一个基于Python编程语言开发的应用程序,主要用于提供美甲服务的在线预约功能。...通过分析和研究此源码,开发者不仅可以提升Python技能,还能了解到如何构建一个完整的在线预约系统。

    玩转python网络爬虫配书源码.rar

    例如,使用`requests.get(url)`可以发送一个GET请求到指定URL,返回的Response对象包含了服务器的响应信息,如状态码、响应头和响应体。 2. **BeautifulSoup库**:这个库主要用于解析HTML和XML文档。它提供了强大的...

    python实战项目源码-BBS论坛源码-含可执行文件.zip

    这个Python实战项目是一个BBS(Bulletin Board System,电子公告板)论坛的源码,它包含了实现论坛功能的各种脚本和可执行文件。这样的项目对于学习Python编程,特别是Web开发技术非常有帮助。以下是对这个项目中...

    mosquitto源码分析.pdf

    在 Mosquitto 的实现中,使用了一个中间层服务器来维护多对多的关系,使得客户端之间的关系变得简单化。这使得客户端的开发和维护变得更加方便。 此外,Mosquitto 还提供了丰富的 API 和工具,例如 mosquitto_pub ...

    计算机毕业设计 http代理服务器的实现(程序) http源代码+开发文档说明 软件/插件 范文 模板 程序源码

    2. **代理服务器**:代理服务器是位于客户端和目标服务器之间的一个中间节点,它可以转发用户的请求到目标服务器,并将服务器的响应返回给用户。代理服务器的作用包括缓存、访问控制、匿名浏览、负载均衡等。在本...

    基于Python的招聘网站数据爬虫设计源码

    基于Python的招聘网站数据爬虫设计源码项目,不仅是一个编程实践的展示,也是对网络数据采集技术应用的一次深入探索。它通过技术手段,为人力资源管理提供了新的解决方案,同时也提醒开发者在开发类似系统时要兼顾...

    网络爬虫-如何检测免费代理IP是否有效-Python实例源码.zip

    代理IP就像一个中间人,它接收来自你的请求,然后以自己的IP地址转发给目标服务器,最后再将响应返回给你。这样,目标服务器看到的是代理IP,而不是你的实际IP,有助于避免频繁请求导致的IP封锁。 检测代理IP有效性...

    Python基于Django的电影系统源码.zip

    Python基于Django的电影系统源码是一个典型的Web应用开发项目,它展示了如何使用Python的Django框架构建一个功能完备的在线电影信息系统。Django是一个高级的、免费的开源Web框架,它遵循模型-模板-视图(Model-...

    基于python+django的天天生鲜的电商项目源码.zip

    标题"基于python+django的天天生鲜的电商项目源码.zip"表明这是一个使用Python的Django框架开发的电子商务项目,名为“天天生鲜”。该项目专注于生鲜食品的在线销售,源代码被压缩在ZIP文件中。描述中的内容与标题...

Global site tag (gtag.js) - Google Analytics