<?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>waimv.com &#187; 抓取</title>
	<atom:link href="http://www.waimv.com/tag/%e6%8a%93%e5%8f%96/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.waimv.com</link>
	<description></description>
	<lastBuildDate>Fri, 09 Nov 2018 10:41:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Linux curl使用介绍</title>
		<link>http://www.waimv.com/linux/30/</link>
		<comments>http://www.waimv.com/linux/30/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 08:15:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[抓取]]></category>

		<guid isPermaLink="false">http://www.szpian.com/?p=30</guid>
		<description><![CDATA[Curl是Linux下一个很强大的http命令行工具，其功能十分强大。 1) 读取网页 $ curl http://www.linuxidc.com 2) 保存网页 $ curl http://www.linuxidc.com > page.html $ curl -o page.html http://www.linuxidc.com 3) 使用的proxy服务器及其端口： -x $ curl -x 123.45.67.89:1080 -o page.html http://www.linuxidc.com 4) 使用cookie来记录session信息 $ curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.linuxidc.com 这个option: -D 是把http的response里面的cookie信息存到一个特别的文件中去， 这样，当页面被存到page.html的同时，cookie信息也被存到了cookie0001.txt里面了 5）那么，下一次访问的时候，如何继续使用上次留下的cookie信息呢？ 使用option来把上次的cookie信息追加到http request里面去： -b $ curl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt [...]]]></description>
			<content:encoded><![CDATA[<p>Curl是Linux下一个很强大的http命令行工具，其功能十分强大。</p>
<p>1) 读取网页<br />
$ curl http://www.linuxidc.com</p>
<p>2) 保存网页<br />
$ curl http://www.linuxidc.com > page.html<br />
$ curl -o page.html http://www.linuxidc.com</p>
<p>3) 使用的proxy服务器及其端口： -x<br />
$ curl -x 123.45.67.89:1080 -o page.html http://www.linuxidc.com</p>
<p>4) 使用cookie来记录session信息<br />
$ curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.linuxidc.com<br />
这个option: -D 是把http的response里面的cookie信息存到一个特别的文件中去，<br />
这样，当页面被存到page.html的同时，cookie信息也被存到了cookie0001.txt里面了</p>
<p>5）那么，下一次访问的时候，如何继续使用上次留下的cookie信息呢？<br />
使用option来把上次的cookie信息追加到http request里面去： -b<br />
$ curl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt -b cookie0001.txt http://www.linuxidc.com</p>
<p>6）浏览器信息<br />
$ curl -A &#8220;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)&#8221; -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.linuxidc.com</p>
<p>7）referer<br />
$ curl -A &#8220;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)&#8221; -x 123.45.67.89:1080 -e &#8220;mail.linuxidc.com&#8221; -o page.html -D cookie0001.txt http://www.linuxidc.com<br />
这样就可以骗对方的服务器，你是从mail.linuxidc.com点击某个链接过来的</p>
<p>8）下载文件<br />
$ curl -o 1.jpg http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG<br />
$ curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG<br />
-O 可以按照服务器上的文件名，自动存在本地</p>
<p>$ curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG</p>
<p>9）批量下载<br />
$ curl -O http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG</p>
<p>这样产生的下载，就是<br />
~zzh/001.JPG<br />
~zzh/002.JPG<br />
&#8230;<br />
~zzh/201.JPG<br />
~nick/001.JPG<br />
~nick/002.JPG<br />
&#8230;<br />
~nick/201.JPG</p>
<p>$ 自定义文件名的下载<br />
curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG<br />
这样，自定义出来下载下来的文件名，就变成了这样：<br />
原来： ~zzh/001.JPG —-> 下载后： 001-zzh.JPG 原来： ~nick/001.JPG —-> 下载后： 001-nick.JPG<br />
这样一来就不怕文件重名啦</p>
<p>9）断点续传<br />
$ curl -c -O http://cgi2.tky.3wb.ne.jp/~zzh/screen1.JPG</p>
<p>分块下载，我们使用这个option就可以了： -r<br />
举例说明<br />
比如我们有一个http://cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 要下载（赵老师的电话朗诵 <img src='http://www.waimv.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ）我们就可以用这样的命令：<br />
$ curl -r 0-10240 -o &#8220;zhao.part1&#8243; http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 &#038;\<br />
$ curl -r 10241-20480 -o &#8220;zhao.part1&#8243; http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 &#038;\<br />
$ curl -r 20481-40960 -o &#8220;zhao.part1&#8243; http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3 &#038;\<br />
$ curl -r 40961- -o &#8220;zhao.part1&#8243; http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3<br />
这样就可以分块下载啦。不过你需要自己把这些破碎的文件合并起来如果你用UNIX或苹果，用 cat zhao.part* > zhao.MP3就可以如果用的是Windows，用copy /b 来解决吧，呵呵</p>
<p>上面讲的都是http协议的下载，其实ftp也一样可以用。用法嘛，<br />
$ curl -u name:passwd ftp://ip:port/path/file<br />
或者大家熟悉的<br />
$ curl ftp://name:passwd@ip:port/path/file</p>
<p>10) 上传的option是 -T</p>
<p>比如我们向ftp传一个文件：<br />
$ curl -T localfile -u name:passwd ftp://upload_site:port/path/</p>
<p>当然，向http服务器上传文件也可以比如<br />
$ curl -T localfile http://cgi2.tky.3web.ne.jp/~zzh/abc.cgi<br />
注意，这时候，使用的协议是HTTP的PUT method</p>
<p>刚才说到PUT，嘿嘿，自然让老服想起来了其他几种methos还没讲呢！ GET和POST都不能忘哦。</p>
<p>11) POST和GET模式<br />
$ curl http://www.linuxidc.com/login.cgi?user=nickwolfe&#038;password=12345</p>
<p>而POST模式的option则是 -d<br />
比如，<br />
$ curl -d &#8220;user=nickwolfe&#038;password=12345&#8243; http://www.linuxidc.com/login.cgi</p>
<p>一点需要注意的是，POST模式下的文件上的文件上传，比如</p>
<form method="POST" enctype="multipar/form-data" action="http://cgi2.tky.3web.ne.jp/~zzh/up_file.cgi">
<input type=file name=upload>
<input type=submit name=nick value="go">
</form>
<p>这样一个HTTP表单，我们要用curl进行模拟，就该是这样的语法：<br />
$ curl -F upload=@localfile -F nick=go http://cgi2.tky.3web.ne.jp/~zzh/up_file.cgi</p>
<p>https本地证书<br />
$ curl -E localcert.pem https://remote_server</p>
<p>再比如，你还可以用curl通过dict协议去查字典<br />
$ curl dict://dict.org/d:computer</p>
]]></content:encoded>
			<wfw:commentRss>http://www.waimv.com/linux/30/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://cgi2.tky.3web.ne.jp/~zzh/zhao1.MP3" length="0" type="audio/mpeg" />
		</item>
	</channel>
</rss>
