<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NeatCN(NeatStudio工作室) &#187; curl</title>
	<atom:link href="http://www.neatcn.com/tags/curl/feed" rel="self" type="application/rss+xml" />
	<link>http://www.neatcn.com</link>
	<description>NeatStudio工作室</description>
	<lastBuildDate>Fri, 09 Dec 2011 13:07:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>php-curl manual</title>
		<link>http://www.neatcn.com/show-61-1.shtml</link>
		<comments>http://www.neatcn.com/show-61-1.shtml#comments</comments>
		<pubDate>Thu, 29 Apr 2010 01:16:49 +0000</pubDate>
		<dc:creator>膘叔</dc:creator>
				<category><![CDATA[PHP开发]]></category>
		<category><![CDATA[curl]]></category>

		<guid isPermaLink="false">http://www.neatcn.com/?p=61</guid>
		<description><![CDATA[curl 是使用URL语法的传送文件工具，支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持SSL证书、HTTP POST、HTTP PUT 、FTP 上传，kerberos、基于HTT格式的上传、代理、cookie、用户＋口令证明、文件传送恢复、http代理通道和大量其他有用的技巧。详见参考手册。 以下关于此函数各项使用参数: bool curl_setopt (int ch, string option, mixed value) curl_setopt()函数将为一个CURL会话设置选项。option参数是你想要的设置，value是这个选项给定的值。 下列选项的值将被作为长整形使用(在option参数中指定)： * CURLOPT_INFILESIZE: 当你上传一个文件到远程站点，这个选项告诉PHP你上传文件的大小。 * CURLOPT_VERBOSE: 如果你想CURL报告每一件意外的事情，设置这个选项为一个非零值。 * CURLOPT_HEADER: 如果你想把一个头包含在输出中，设置这个选项为一个非零值。 * CURLOPT_NOPROGRESS: 如果你不会PHP为CURL传输显示一个进程条，设置这个选项为一个非零值。注意：PHP自动设置这个选项为非零值，你应该仅仅为了调试的目的来改变这个选项。 * CURLOPT_NOBODY: 如果你不想在输出中包含body部分，设置这个选项为一个非零值。 &#8230; <a href="http://www.neatcn.com/show-61-1.shtml">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>curl 是使用URL语法的传送文件工具，支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持SSL证书、HTTP POST、HTTP PUT 、FTP 上传，kerberos、基于HTT格式的上传、代理、cookie、用户＋口令证明、文件传送恢复、http代理通道和大量其他有用的技巧。详见参考手册。</p>
<p>以下关于此函数各项使用参数:</p>
<p>bool curl_setopt (int ch, string option, mixed value)</p>
<p>curl_setopt()函数将为一个CURL会话设置选项。option参数是你想要的设置，value是这个选项给定的值。</p>
<p>下列选项的值将被作为长整形使用(在option参数中指定)：</p>
<p>* CURLOPT_INFILESIZE: 当你上传一个文件到远程站点，这个选项告诉PHP你上传文件的大小。<br />
* CURLOPT_VERBOSE: 如果你想CURL报告每一件意外的事情，设置这个选项为一个非零值。<br />
* CURLOPT_HEADER: 如果你想把一个头包含在输出中，设置这个选项为一个非零值。<br />
* CURLOPT_NOPROGRESS: 如果你不会PHP为CURL传输显示一个进程条，设置这个选项为一个非零值。注意：PHP自动设置这个选项为非零值，你应该仅仅为了调试的目的来改变这个选项。<br />
* CURLOPT_NOBODY: 如果你不想在输出中包含body部分，设置这个选项为一个非零值。<br />
* CURLOPT_FAILONERROR: 如果你想让PHP在发生错误(HTTP代码返回大于等于300)时，不显示，设置这个选项为一人非零值。默认行为是返回一个正常页，忽略代码。<br />
* CURLOPT_UPLOAD: 如果你想让PHP为上传做准备，设置这个选项为一个非零值。<br />
* CURLOPT_POST: 如果你想PHP去做一个正规的HTTP POST，设置这个选项为一个非零值。这个POST是普通的 application/x-www-from-urlencoded 类型，多数被HTML表单使用。<br />
* CURLOPT_FTPLISTONLY: 设置这个选项为非零值，PHP将列出FTP的目录名列表。<br />
* CURLOPT_FTPAPPEND: 设置这个选项为一个非零值，PHP将应用远程文件代替覆盖它。<br />
* CURLOPT_NETRC: 设置这个选项为一个非零值，PHP将在你的 ~./netrc 文件中查找你要建立连接的远程站点的用户名及密码。<br />
* CURLOPT_FOLLOWLOCATION: 设置这个选项为一个非零值(象 “Location: “)的头，服务器会把它当做HTTP头的一部分发送(注意这是递归的，PHP将发送形如 “Location: “的头)。<br />
* CURLOPT_PUT: 设置这个选项为一个非零值去用HTTP上传一个文件。要上传这个文件必须设置CURLOPT_INFILE和CURLOPT_INFILESIZE选项.<br />
* CURLOPT_MUTE: 设置这个选项为一个非零值，PHP对于CURL函数将完全沉默。<br />
* CURLOPT_TIMEOUT: 设置一个长整形数，作为最大延续多少秒。<br />
* CURLOPT_LOW_SPEED_LIMIT: 设置一个长整形数，控制传送多少字节。<br />
* CURLOPT_LOW_SPEED_TIME: 设置一个长整形数，控制多少秒传送CURLOPT_LOW_SPEED_LIMIT规定的字节数。<br />
* CURLOPT_RESUME_FROM: 传递一个包含字节偏移地址的长整形参数，(你想转移到的开始表单)。<br />
* CURLOPT_SSLVERSION: 传递一个包含SSL版本的长参数。默认PHP将被它自己努力的确定，在更多的安全中你必须手工设置。<br />
* CURLOPT_TIMECONDITION: 传递一个长参数，指定怎么处理CURLOPT_TIMEVALUE参数。你可以设置这个参数为TIMECOND_IFMODSINCE 或 TIMECOND_ISUNMODSINCE。这仅用于HTTP。<br />
* CURLOPT_TIMEVALUE: 传递一个从1970-1-1开始到现在的秒数。这个时间将被CURLOPT_TIMEVALUE选项作为指定值使用，或被默认 TIMECOND_IFMODSINCE使用。</p>
<p>下列选项的值将被作为字符串：</p>
<p>* CURLOPT_URL: 这是你想用PHP取回的URL地址。你也可以在用curl_init()函数初始化时设置这个选项。<br />
* CURLOPT_USERPWD: 传递一个形如[username]:[password]风格的字符串,作用PHP去连接。<br />
* CURLOPT_PROXYUSERPWD: 传递一个形如[username]:[password] 格式的字符串去连接HTTP代理。<br />
* CURLOPT_RANGE: 传递一个你想指定的范围。它应该是”X-Y”格式，X或Y是被除外的。HTTP传送同样支持几个间隔，用逗句来分隔(X-Y,N-M)。<br />
* CURLOPT_POSTFIELDS: 传递一个作为HTTP “POST”操作的所有数据的字符串。<br />
* CURLOPT_REFERER: 在HTTP请求中包含一个”referer”头的字符串。<br />
* CURLOPT_USERAGENT: 在HTTP请求中包含一个”user-agent”头的字符串。<br />
* CURLOPT_FTPPORT: 传递一个包含被ftp “POST”指令使用的IP地址。这个POST指令告诉远程服务器去连接我们指定的IP地址。这个字符串可以是一个IP地址，一个主机名，一个网络界面名 (在UNIX下)，或是‘-’(使用系统默认IP地址)。<br />
* CURLOPT_COOKIE: 传递一个包含HTTP cookie的头连接。<br />
* CURLOPT_SSLCERT: 传递一个包含PEM格式证书的字符串。<br />
* CURLOPT_SSLCERTPASSWD: 传递一个包含使用CURLOPT_SSLCERT证书必需的密码。<br />
* CURLOPT_COOKIEFILE: 传递一个包含cookie数据的文件的名字的字符串。这个cookie文件可以是Netscape格式，或是堆存在文件中的HTTP风格的头。<br />
* CURLOPT_CUSTOMREQUEST: 当进行HTTP请求时，传递一个字符被GET或HEAD使用。为进行DELETE或其它操作是有益的，更Pass a string to be used instead of GET or HEAD when doing an HTTP request. This is useful for doing or another, more obscure, HTTP request. 注意: 在确认你的服务器支持命令先不要去这样做。下列的选项要求一个文件描述(通过使用fopen()函数获得)：<br />
* CURLOPT_FILE: 这个文件将是你放置传送的输出文件，默认是STDOUT.<br />
* CURLOPT_INFILE: 这个文件是你传送过来的输入文件。<br />
* CURLOPT_WRITEHEADER: 这个文件写有你输出的头部分。<br />
* CURLOPT_STDERR: 这个文件写有错误而不是stderr。用来获取需要登录的页面的例子,当前做法是每次或许都登录一次,有需要的人再做改进了.</p>
<p>If you want to look ennglish manual,you can find it from &#8220;http://cn.php.net/manual/en/curl.constants.php&#8221;,and example page is:http://www.neatcn.com/show-23-1.shtml.<br />
The Chinese manual from php-curl ,copy from http://52037872.cn/blog/post/263</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neatcn.com/show-61-1.shtml/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>采用 CURL登录量子统计(二)</title>
		<link>http://www.neatcn.com/show-23-1.shtml</link>
		<comments>http://www.neatcn.com/show-23-1.shtml#comments</comments>
		<pubDate>Mon, 15 Mar 2010 00:51:28 +0000</pubDate>
		<dc:creator>膘叔</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[PHP开发]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[linezing]]></category>

		<guid isPermaLink="false">http://www.neatcn.com/?p=23</guid>
		<description><![CDATA[本文就全是代码了。。。 $cookiefile = tempnam( './log/' , 'cookie' );//设定cookie文件的路径 。 $ch = curl_init(); $header[]="Content-Type: application/x-www-form-urlencoded"; curl_setopt($ch, CURLOPT_URL, 'http://www.linezing.com/login.php'); //登录地址 curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //发送header ，其实这个header可以不发送 curl_setopt($ch, CURLOPT_POST, 1); //这是POST数据 curl_setopt($ch, CURLOPT_POSTFIELDS, 'referer=&#038;webname=index&#038;username=用户名&#038;password=密码&#038;submit=%E7%99%BB%E5%BD%95');//http_build_query( $postData)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //这个是代表curl_exec后取返回成字符串，而不是象WEB一样跳转 curl_setopt($ch, CURLOPT_HEADER, 0); //curl返回的时候，默认都是带有header信息的，所以这里设为0，代表返回的时候不要header信息 curl_setopt($ch, &#8230; <a href="http://www.neatcn.com/show-23-1.shtml">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>本文就全是代码了。。。</p>
<pre class="brush:php">
$cookiefile = tempnam( './log/' , 'cookie' );//设定cookie文件的路径 。
$ch = curl_init();
$header[]="Content-Type: application/x-www-form-urlencoded";
curl_setopt($ch, CURLOPT_URL, 'http://www.linezing.com/login.php');  //登录地址
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);  //发送header ，其实这个header可以不发送
curl_setopt($ch, CURLOPT_POST, 1);  //这是POST数据
curl_setopt($ch, CURLOPT_POSTFIELDS, 'referer=&#038;webname=index&#038;username=用户名&#038;password=密码&#038;submit=%E7%99%BB%E5%BD%95');//http_build_query( $postData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  //这个是代表curl_exec后取返回成字符串，而不是象WEB一样跳转
curl_setopt($ch, CURLOPT_HEADER, 0);  //curl返回的时候，默认都是带有header信息的，所以这里设为0，代表返回的时候不要header信息
curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); //这是在用sniff抓包的时候发现用了gzip,deflate的encoding，
curl_setopt($ch, CURLOPT_REFERER, 'http://www.linezing.com/');//记录来源的Referer
curl_setopt($ch, CURLOPT_COOKIEFILE,$cookiefile);
curl_setopt($ch, CURLOPT_COOKIEJAR,$cookiefile);
curl_exec($ch);  //我这里并没有取返回值，主要是把cookie记录下来

curl_setopt($ch, CURLOPT_URL, 'http://www.linezing.com/router.php');  //登录后跳转的网址
//curl_setopt($ch, CURLOPT_COOKIEFILE,$cookiefile); 原先我在这里也记录cookie了，但事实上，我这样做之后，反而会把第一次登录时的cookie覆盖了。。。郁闷
//curl_setopt($ch, CURLOPT_COOKIEJAR,$cookiefile);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.linezing.com/');
curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIESESSION,1);
$res = curl_exec($ch);  

curl_setopt($ch, CURLOPT_URL, 'http://tongji.linezing.com/welcome.html');  //welcome页还会再判断是否登录，如果没有登录，会是一段JS跳到www.linezing.com
//curl_setopt($ch, CURLOPT_COOKIEFILE,$cookiefile);
//curl_setopt($ch, CURLOPT_COOKIEJAR,$cookiefile);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.linezing.com/');
curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIESESSION,1);
curl_exec($ch);  

curl_setopt($ch, CURLOPT_URL, 'http://tongji.linezing.com/mystat.html');
curl_setopt($ch, CURLOPT_COOKIEFILE,$cookiefile);
curl_setopt($ch, CURLOPT_COOKIEJAR,$cookiefile);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIESESSION,1);
$res = curl_exec($ch);  //这里获取返回值，我是想看一下是不是正确。。。
curl_close($ch);
echo htmlSpecialChars( $res );
</pre>
<p>因为是临时写的代码，所以没有封装，但也算是尽量做了注释。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neatcn.com/show-23-1.shtml/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>采用CURL登录量子统计(一)</title>
		<link>http://www.neatcn.com/show-21-1.shtml</link>
		<comments>http://www.neatcn.com/show-21-1.shtml#comments</comments>
		<pubDate>Sat, 13 Mar 2010 15:07:32 +0000</pubDate>
		<dc:creator>膘叔</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[PHP开发]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[linezing]]></category>

		<guid isPermaLink="false">http://www.neatcn.com/?p=21</guid>
		<description><![CDATA[我自己的站点用的是量子统计，所以对于量子统计就需要有更多的研究和学习。 我想的是，如果我能够通过手机，每天在自己的某个指定页面，就能够看到朋友们过来时的关键字或者搜索引擎关键字等。我就可以利用他们有针对性的对网站进行优化？也可以随时关注网站的流量等信息了。 于是，想到什么就做什么，我直接用snoopy类开始尝试提交post数据，提交后取后返回值 ，并同时打开http://tongji.linezing.com/mystat.html页面（这是一个汇总页），但结果都是提示我需要登录。 如此反复尝试多次，也尝试用curl进行登录，但都是一直失败。最后我不得不祭起抓包利器：smartsniff，这是一个小工具，但是他的抓包功能很强。于是我对我的行为开始抓包，从登录直到显示mystat.html页面，结果却发现，从登录开始，到显示mystat.html页面，一共抓了四次包，他们分别是： http://www.linezing.com/login.php 登录提交页，POST提交 http://www.linezing.com/router.php GET方式 http://tongji.linezing.com/welcome.html GET方式 http://tongji.linezing.com/mystat.html GET方式 其实我觉得奇怪的是，这四个页面是在同一台机器上，而且主机名却是bbs.linezing.com，好妖异。 不过，既然分析了抓包数据，得到这四个页面，那么剩下的就开始写代码了，欲知后事如何，请看周一的代码分析（其实是因为代码在单位的电脑上，在家里地无法更新而己），敬请关注。]]></description>
			<content:encoded><![CDATA[<p>我自己的站点用的是量子统计，所以对于量子统计就需要有更多的研究和学习。<br />
我想的是，如果我能够通过手机，每天在自己的某个指定页面，就能够看到朋友们过来时的关键字或者搜索引擎关键字等。我就可以利用他们有针对性的对网站进行优化？也可以随时关注网站的流量等信息了。</p>
<p>于是，想到什么就做什么，我直接用snoopy类开始尝试提交post数据，提交后取后返回值 ，并同时打开http://tongji.linezing.com/mystat.html页面（这是一个汇总页），但结果都是提示我需要登录。</p>
<p>如此反复尝试多次，也尝试用curl进行登录，但都是一直失败。最后我不得不祭起抓包利器：smartsniff，这是一个小工具，但是他的抓包功能很强。于是我对我的行为开始抓包，从登录直到显示mystat.html页面，结果却发现，从登录开始，到显示mystat.html页面，一共抓了四次包，他们分别是：</p>
<blockquote>
<ol>
<li>http://www.linezing.com/login.php 登录提交页，POST提交</li>
<li>http://www.linezing.com/router.php GET方式</li>
<li>http://tongji.linezing.com/welcome.html GET方式</li>
<li>http://tongji.linezing.com/mystat.html GET方式</li>
</ol>
</blockquote>
<p>其实我觉得奇怪的是，这四个页面是在同一台机器上，而且主机名却是bbs.linezing.com，好妖异。</p>
<p>不过，既然分析了抓包数据，得到这四个页面，那么剩下的就开始写代码了，欲知后事如何，请看周一的代码分析（其实是因为代码在单位的电脑上，在家里地无法更新而己），敬请关注。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neatcn.com/show-21-1.shtml/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

