Python网络编程
文章平均质量分 81
关注Python网络编程,探讨Python高性能网络编程框架。
yueguanghaidao
这个作者很懒,什么都没留下…
展开
-
[gevent源码分析] c-ares异步DNS请求
c-ares是异步DNS请求库,libcurl,libevent,wireshark都使用了c-ares,gevent1.0版本前使用的是libevent,所以它的DNS请求也是使用c-ares,1.0版本后使用cython封装了c-ares。c-ares官方文档,http://c-ares.haxx.se/docs.html。原创 2014-09-17 00:43:53 · 10631 阅读 · 0 评论 -
[gevent源码分析] gevent两架马车-libev和greenlet
本篇将讨论gevent的两架马车-libev和greenlet如何协同工作的。gevent事件驱动底层使用了libev,我们先看看如何单独使用gevent中的事件循环。#coding=utf8import socketimport geventfrom gevent.core import loopdef f(): s, address = sock.accept() p原创 2014-09-08 00:02:41 · 11387 阅读 · 2 评论 -
[gevent源码分析] 深度分析gevent运行流程
一直不太懂gevent运行流程,最近看源码略有所得,不敢独享,分享之。原创 2014-04-25 00:13:06 · 109363 阅读 · 7 评论 -
[Python网络编程]浅析守护进程后台任务的设计与实现
在做基于B/S应用中,经常有需要后台运行任务的需求,最简单比如发送邮件。在一些如防火墙,WAF等项目中,前台只是为了展示内容与各种参数配置,后台守护进程才是重头戏。所以在防火墙配置页面中可能会经常看到调用cgi,但真正做事的一般并不是cgi,比如说执行关机命令,他们的逻辑如下: (ps:上图所说的前台界面包含通常web开发中的后端,不然也没有socket一说) 为什么要这么设计你可能疑惑原创 2014-06-28 20:33:10 · 5995 阅读 · 0 评论 -
[Python网络编程]gevent httpclient以及网页编码
之前看到geventhttpclient这个项目,https://github.com/gwik/geventhttpclient,官方文档说非常快,由于响应使用了C的解析,所以我一直想把这玩意用到项目中,这两天一直在纠结这玩意,说实在一句话,比较难用,封装的不给力,最大缺陷如下:1.不支持重定向,重定向需要自己来写,很费事2.新建的httpclient对象只能发送同域名的请求这相当的蛋疼,我花了原创 2014-05-30 16:41:47 · 4874 阅读 · 0 评论 -
[Python网络编程] DNS缓存解决方案
记得以前写爬虫的时候为了防止原创 2014-05-21 11:36:14 · 6646 阅读 · 0 评论 -
[python网络编程]DNS服务器
在上一篇中,使用scrapy修改源IP发送请求的最后我们提到由于hosts文件不支持正则,会导致我们的随机域名DNS查询失败。是用DNS服务器可以解决这个问题,下面是我用gevent写的小工具,很简单。我们只拦截匹配的A记录,然后发送DNS Response,如果不匹配,那么我们服务器就是一个DNS代理,转发请求。# -*- coding=utf-8 -*-import structfrom原创 2014-05-09 12:30:56 · 6959 阅读 · 0 评论 -
[python网络编程]使用scapy修改源IP发送请求
今天同事想测试WAF的页面统计功能,所以需要模拟多个IP向多个域名发送请求,也就是需要修改源IP地址。这个如果使用socket库就比较麻烦了,需要使用raw socket,相当麻烦。还好咱有scapy,轻松搞定。DOMAIN是我随机构造的域名库,SOURCE也是随机构造的源IP地址。#!/usr/bin/env python#-*-encoding:UTF-8-*-from scapy.al原创 2014-05-07 23:46:49 · 23225 阅读 · 3 评论 -
[Python网络编程]使用select,poll
import socketimport selects=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect(('192.168.9.178',80))#s.settimeout(5)packet = """\GET /cs.php?a=php HTTP/1.0Host: 192.168.9.178"""#asyncdebug=1s.s原创 2014-04-11 20:19:51 · 5903 阅读 · 3 评论