Python Virtualenv
摘要:Virtualenv virtualenv的功能是创建独立的python开发环境,以解决不同项目依赖、版本以及间权限问题。例如一个项目依赖jinja2.7,另一个项目依赖jinja2.6,这时就可以使用virtualenv为这两个项目各自创建一套独立的python运行环境。 安装 创建环境 上面代码
阅读全文
Python Flask Jinja2模板引擎
摘要:模板 简介 模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请 求的上下文中才能知道。 渲染 使用真实值替换变量,再返回最终得到的响应字符串,这一过程 称为渲染。为了渲染模板,Flask 使用了一个名为 Jinja2 的强大模板引擎。 以下列代码为例: 函数的第一个参数是
阅读全文
Python 豆瓣日记爬取
摘要:无聊写了个豆瓣日记的小爬虫,requests+bs4。 cookies_src可填可不填,主要是为了爬取仅自己可见的日记。 url填写的是日记页面,即https://www.douban.com/people/ /notes 关于日记内容的处理部分,本来是可以直接用.text来获取的,但``标签均被
阅读全文
Python 函数装饰器
摘要:作用 在不修改原函数定义的前提下,动态地增加函数的功能。 实现方式 通过定义一个高阶函数,接受被装饰的函数作为参数,返回一个包装函数。 例子 一个打印helloworld的函数,我们需要在函数执行前打印函数名。 当给msg加上log的装饰器后,msg实际上已经是wrapper函数了。( 结果为wra
阅读全文
Python 生成器
摘要:一个生成杨辉三角的例子: python def yh_triangle(line): a=[1] 本次的序列 n=0 while n
阅读全文
ss源码学习--从协议建立到完成一次代理请求
摘要:上一次介绍了ss源码中各个事件处理函数完成的工作,这次具体分析一下协议的建立以及请求数据的传输过程。 因为ss的local和server共用一个类以及一系列的事件处理函数,所以看起来稍显复杂。下面来将local和server端结合分析一下。 首先进程向local端发送发送请求协商版本和认证方法。lo
阅读全文
ss源码学习--事件处理
摘要:为了方便区分,以下分别使用local,server,remote代表ss客户端,ss服务端,以及ss客户端请求访问的远程主机。 在***中,无论对于local还是server,都需要建立两个socket:local_sock和remote_sock 对于local,local_soc
阅读全文
ss源码学习--工作流程
摘要:ss的local端和server端的工作流程相似,因此复用了TCPRelay类和TCPRelayHandler类。 两端均是使用TCPRelay类监听连接,并使用TCPRelayHandler类处理请求。 以server端为例: 这里创建了一个TCPRelay对象以及EventLoop,并将所有tc
阅读全文