当前位置:  互联网>综合
本页文章导读:
    ▪Python+Django+Nginx配置      Python和Django的安装就不写了,网上太多了,Django的部分推荐看http://www.djangoproject.com/ 已经很详细了。 下面记录一下怎样为Django配置Nginx: 需要用到flup,直接python setup.py install安装即可。ht.........
    ▪yii配置      右击”计算机“->属性->高级系统设置->环境变量->新建: 变量名:PATH; 变量值:E:\wamp\www;E:\framework\;注意中间用分号隔开; 如果提示:“php.exe”不是内部或外部命令……是因为YII.........
    ▪模拟网页浏览器与Web服务器交互        本文转自:http://www.rupeng.com/forum/thread-16020-1-1.html 最近因为某些需要,在学习如何通过编程来和Web服务器交互。 现在似乎有点入门了,和大家分享一下心得。 (估计这也是做农场外.........

[1]Python+Django+Nginx配置
    来源: 互联网  发布时间: 2013-10-21
Python和Django的安装就不写了,网上太多了,Django的部分推荐看http://www.djangoproject.com/ 已经很详细了。
下面记录一下怎样为Django配置Nginx:
需要用到flup,直接python setup.py install安装即可。http://trac.saddi.com/flup
 
然后
#python manage.py runfcgi socket=/tmp/python/python.sock maxrequests=1
当然也可以
#python manage.py runfcgi method=prefork host=127.0.0.1 port=9001
配置nginx.conf
server {
        listen       80;
        server_name  p.wraith.com;
        root /data0/htdocs/python;
 
  
    
[2]yii配置
    来源: 互联网  发布时间: 2013-10-21
右击”计算机“->属性->高级系统设置->环境变量->新建: 变量名:PATH; 变量值:E:\wamp\www;E:\framework\;注意中间用分号隔开; 如果提示:“php.exe”不是内部或外部命令……是因为YII核心包中的yiic.bat找不到php.exe,我们可以在将yii/framework/yiic.bat文件修改如下: if "%PHP_COMMAND%" == "" set PHP_COMMAND=E:\wamp\bin\php\php5.3.10\php.exe,这个路径根据你的实际安装路径作出改变;
然后在cmd中输入E:\framework>yiic webapp E:\wamp\www\yiiTest,输入yes,这时候在www目录下生成一个yiiTest项目;
作者:u010258505 发表于2013-5-15 11:07:27 原文链接
阅读:84 评论:0 查看评论

    
[3]模拟网页浏览器与Web服务器交互
    来源: 互联网  发布时间: 2013-10-21
 

本文转自:http://www.rupeng.com/forum/thread-16020-1-1.html

最近因为某些需要,在学习如何通过编程来和Web服务器交互。
现在似乎有点入门了,和大家分享一下心得。
(估计这也是做农场外挂等的基础,如果你有兴趣,欢迎和我讨论)

1.前期准备

必备知识/工具:
  1.http协议基础
  2.网络抓包工具

要与web服务器进行交互,基本的http协议知识是必须的。
这里我用自己的理解来简单说下吧:
初学时,需要知道http协议最重要的几个特点,否者就无法正确编写程序。

1.http协议是请求/应答模式的
就是,首先你先发一个请求给web服务器,然后web服务器会给你一个回应。
与web服务器的交互过程,就是这“一问一答”的过程。
常用请求有2种,一种是Get(用于请求获取资源)。一种是Post(用于请求提交表单等数据)

2.http协议是不维持连接的。
这个是什么意思呢?和我们上次做的foxmail的smtp协议不同,
http协议在每一次的“问答”过程结束后,服务器都会关闭连接。
就是说,你soket创建一个套接字去连接服务器,并且发送了一个请求(问),
服务器返回一个请求的结果(答)后,服务器就会关闭这个套接字。
如果要在发送第二个请求怎么办?——再创建一个套接字,再去连接服务器。

3.http协议不会记录访问者的状态
如2所说,http协议不维持连接。每一次问答结束后,连接的套接字就没用了。
那么,像论坛这样的网站是如何记住我们已经登录了呢?答案是:cookies.
在提交登录表单后,如果登录成功,服务器会返回一个或几个cookie。
在下一次的请求中,再次把这些cookie发送给服务器,来证明自己已经登录了网站。

以上3点,是我这几天学习的总结,如有错,还请高手指点。
有了http的基础知识后,我们还需要一款网络抓包工具,
去了解浏览器在与web服务器交互的过程中都发送/接收到了什么。
我们自己编写的程序,其实也就是把浏览器发给服务器的东西自己再发送一次
浏览器发送了什么,我们就发送什么,从而达到模拟浏览器与服务器交互的过程。

抓包工具有很多:Ethereal , sniffer 都可以。
这里我们只关心http的数据,所以选用:HttpWatch.
关于HttpWatch的详细使用,你们自己百度下吧。。。这里我就不罗嗦了

2.我编写的HttpTester工具

这个“工具”很简单,是用来发送一些测试的http请求数据的,并且接收服务器的回应数据。
如果想做个论坛自动灌水机,或者是什么XX网页游戏的助手的话。可以先用HttpTester来测试一下。
HttpTester界面如下:



我的HttpTester可执行文件下载:
HttpTester.rar(135.99 KB, 下载次数: 633)

HttpTester源代码:
IDE:VS2005
语言:C++

游客,如果您要查看本帖隐藏内容请回复


接收数据的延迟,是发送请求后,等待多久才去接收服务器的回应。
为什么要等待呢?如果不等待,请求发送过去后(用send函数),
马上去接收数据(调用recv函数),用非阻塞的套接字会收不到任何数据(原因是明显的)。
就算用了阻塞的套接字,也可能会只收到了“半截”数据。因为服务器如果发送大量的回应数据
网络延迟的存在,我们主机可能会先收到一部分数据,而其他部分的数据在延迟了几秒后才到达。
阻塞套接字的recv接收,在收到一部分数据后,就返回了。

用非阻塞的套接字是什么情况呢?
可以先调用select函数来延迟几秒,测试是否有数据达到。有数据达到了,再调用recv去接收。
注意:select函数的行为是:一旦在指定的延迟时间内,发现能读取数据后,它就返回。
就是说,当只有半截数据过来时,select也返回了,这时调用recv还是只接收到了半截数据。

用简单的方法,阻塞和非阻塞套接字都不能很好地完全接收数据。
我的做法是:先用Sleep函数延迟几秒,然后select函数判断一下,是否有能读取的数据。
如果有,就调用recv去接收。由于事先调用了select判断,
我觉得这里用阻塞的,非阻塞的套接字都无关紧要。

我的这个做法,还有缺陷,就是延迟时间不够的话,还是不能完全接收服务器的回应数据。
回想http协议的特点,服务器会在回应完毕后,关闭套接字。
我们可以尝试做一个recv接收数据循环。循环终止的条件是:套接字已被服务器closesocket掉了。
这个尝试,就交给你们来完成了,谁有做这个测试的,得出结果后,请通知我。。。
我的简单处理方法,已能应付大多数情况。嘿嘿。



3.HttpWatch+HttpTester与服务器交互。

3.1取得CSDN注册会员页面的验证码图片

我先举这个例子来说明,其他的应该可以触类旁通了。

CSDN注册会员的页面地址是:http://passport.csdn.net/UserLogin.aspx?from=%2fPassport.aspx

我们要取得这个页面上的这张验证码图片:



1.打开HttpWatch来分析浏览器在取这张验证码时发送了怎样的请求。



我们可以看到浏览器在请求这张图片时,发送了如下数据:

GET /ShowExPwd.aspx?temp=ge6nmewq HTTP/1.1
Accept: */*
Referer: http://passport.csdn.net/UserLogin.aspx?from=%2fPassport.aspx
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Host: passport.csdn.net
Connection: Keep-Alive
Cookie: ASP.NET_SessionId=na0bcr0ukuehaamjvzbskgta; ClientKey=ab5eb6b5-94b6-45a5-99fb-1662df04030a

2.打开HttpTest,把这串数据原封不动地复制到“请求的数据”编辑框中。
如下图:
注意:填写“请求的数据”,末尾必须要有2个空行。否则收不到任何回应。



“服务器地址”编辑框填写web服务器的IP或者域名,这里是:passport.csdn.net
“服务器端口”编辑框填写web主机的端口,http协议默认端口是80,这里我们填写默认的端口号:80
“接收数据的延迟”编辑框,设置为:1000(一秒)

然后,就可以点“发送”按钮了。
服务器回应结果如下图:



输入一个文件名,然后点“保存数据”按钮,就会把服务器返回的图片数据保存为文件。
然后点“打开文件”,就可以浏览到收到的验证码图片了。

3.2获取咱如鹏网首页的logo图片。

通过HttpWatch的分析,我们知道浏览器在获取咱如鹏网logo时
是发送了类似如下的请求:

GET /forum/templates/uchome/images/logo.gif HTTP/1.1
Accept: */*
Referer: http://www.rupeng.com/forum/
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Host: www.rupeng.com
Connec
    
最新技术文章:
▪用户及权限基础 2---- Linux权限    ▪用户及权限基础 3---- Linux扩展权限    ▪git 简明教程(1) --创建及提交
▪背包 代码    ▪json对象的封装与解析    ▪01背包,完全背包,多重背包 ,模板代码
▪apache安装详解    ▪HDU 4668 Finding string (解析字符串 + KMP)    ▪《TCP-IP详解 卷1:协议》学习笔记(二)
▪《TCP-IP详解 卷1:协议》学习笔记(持续更新...    ▪windows下使用swig    ▪gensim试用
▪Linux Shell脚本编程--nc命令使用详解    ▪solr对跨服务器表联合查询的配置    ▪递归和非递归实现链表反转
▪Linux磁盘及文件系统管理 1---- 磁盘基本概念    ▪Cholesky Decomposition    ▪HTTP协议学习
▪用C语言写CGI入门教程    ▪用hdfs存储海量的视频数据的设计思路    ▪java多线程下载的实现示例
▪【原创】eAccelerator 一个锁bug问题跟踪    ▪hadoop学习之ZooKeeper    ▪使用cuzysdk web API 实现购物导航类网站
▪二维数组中的最长递减子序列    ▪内嵌W5100的网络模块WIZ812MJ--数据手册    ▪xss 跨站脚本攻击
▪RobotFramework+Selenium2环境搭建与入门实例    ▪什么是API    ▪用PersonalRank实现基于图的推荐算法
▪Logtype    ▪关于端口号你知道多少!    ▪Linux基本操作 1-----命令行BASH的基本操作
▪CI8.7--硬币组合问题    ▪Ruby on Rails 学习(五)    ▪如何使用W5300实现ADSL连接(二)
▪不允许启动新事务,因为有其他线程正在该会...    ▪getting start with storm 翻译 第六章 part-3    ▪递归求排列和组合(无重复和有重复)
▪工具类之二:RegexpUtils    ▪Coding Interview 8.2    ▪Coding Interview 8.5
▪素因子分解 Prime factorization    ▪C# DllImport的用法    ▪图的相关算法
▪Softmax算法:逻辑回归的扩展    ▪最小生成树---Kruskal算法---挑战程序设计竞赛...    ▪J2EE struts2 登录验证
▪任意两点间的最短路径---floyd_warshall算法    ▪Sqoop实现关系型数据库到hive的数据传输    ▪FFMPEG采集摄像头数据并切片为iPhone的HTTP Stream...
▪Ubuntu 13.04 – Install Jetty 9    ▪TCP/IP笔记之多播与广播    ▪keytool+tomcat配置HTTPS双向证书认证
▪安装phantomjs    ▪Page Redirect Speed Test    ▪windows media player 中播放pls的方法
▪sre_constants.error: unbalanced parenthesis    ▪http headers    ▪Google MapReduce中文版
▪The TCP three-way handshake (connect)/four wave (closed)    ▪网站反爬虫    ▪Log4j实现对Java日志的配置全攻略
▪Bit Map解析    ▪Notepad 快捷键 大全    ▪Eclipse 快捷键技巧 + 重构
▪win7 打开防火墙端口    ▪Linux Shell脚本入门--awk命令详解    ▪Linux Shell脚本入门--Uniq命令
▪Linux(Android NDK)如何避免僵死进程    ▪http Content-Type一览表    ▪Redis实战之征服 Redis + Jedis + Spring (二)
▪Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源...    ▪利用SQOOP将ORACLE到HDFS    ▪django输出 hello world
▪python re    ▪unity3D与网页的交互    ▪内存共享基本演示
▪python join    ▪不再为无限级树结构烦恼,且看此篇    ▪python实现变参
▪打开文件数限制功能不断地制造问题    ▪Arduino Due, Maple and Teensy3.0 的 W5200性能测试    ▪Selenium实例----12306网站测试
▪基于协同过滤的推荐引擎    ▪C4.5决策树    ▪C#HTTP代理的实现之注册表实现
.net/c#/asp.net iis7站长之家
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3