phpcurl命令⾏,curl命令⾏教程本⽂转载⾃CURL教程:llohellohe.github/Linux/curl-in-action.html
能学到什么?
本⽂将教你基本的curl⽅法,你能学到⽤curl完成如下事情
1. 抓取⼀个⽹页
伪造User-agent,refer
get\post提交⼀个表单 4. 上传⽂件
处理cookie 6. 处理重定向
处理header
⽤curl查有道字典
注:在这⾥可以下载到演⽰的PHP代码。
从打开百度开始
curl "www.baidu"
你就会看到百度的页⾯源代码输出。
在URL前后带上双引号总是个好习惯。避免当url中有&等符号时候的错乱。
curl 保存页⾯:
curl "www.baidu" > /tmp/baidu.html
你会看到⼀条进度条,然后源码就被重定向到了/tmp/baidu.html。
可以在浏览器中输⼊file:///tmp/baidu.html看到⼀张完整的百度⾸页。
当然下载页⾯⽤-o参数看上去更加⾼级⼀点。
curl -o /tmp/baidu2.html "www.baidu"
如果URL中具有⽂件名,那么使⽤ -O 参数也会更⽅便些,它将直接⽤url中的⽂件名称来保存页⾯。
curl 安静点
-s参数可以屏蔽进度条之类的输出,稍微清净点。
curl -s -o /tmp/baidu3.html "www.baidu"
curl 指定USER-AGENT
-A参数⽤来指定USER-AGENT,来看⼀段PHP代码。
$LINE_END="\n";
foreach ($_SERVER as $key => $value) {
echo "$key => $value $LINE_END";
}
>
⽤来打印⼀些基本信息。默认情况下。
可以看到下图:
默认CURL的User-agent为:
curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5
修改User-agent
curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17" localhost/learing-curl/show-server-info.php
curl 指定referer
curl -e "le/" localhost/learing-curl/show-server-info.php
curl Get 请求
先看下⾯的PHP代码,⽤于展⽰GET和POST的表单参数:
foreach ($_GET as $key => $value) {
echo "param $key : $value\n";
}
echo "=======POST INFO=======\n";
foreach ($_POST as $key => $value) {
echo "param $key : $value\n";
}
>
curl "localhost/learing-curl/post-get.php?name=a&age=13"
可以看到下⾯的输出:
curl Post请求
curl -d "name=1&age=3" localhost/learing-curl/post-get.php
可以看到下⾯的输出:
-d参数指定表单以POST的形式执⾏。
-G强制指定表单以GET⽅法提交。
只展⽰Header
curl -I www.baidu
可以看到下⾯的输出:
curl 保存Header
curl - www.alibaba
curl 处理重定向
localhost/learing-curl/302.php是张会302重定向到百度的页⾯。
源代码如下:
$url="www.baidu";
header("Location: $url");
>
curl "localhost/learing-curl/302.php"
发现什么都没有输出。
curl是什么命令我们来看下返回的header。
curl -I "localhost/learing-curl/302.php"
虽然返回了302信息,但是
默认curl是不会处理重定向的,可以通过-L参数指定。
curl -L "localhost/learing-curl/301.php"
这样⼜能看到熟悉的百度页⾯输出了。
curl 提交⽂件
curl -F upload_file=@test.data localhost/learing-curl/upload.php
其中upload_file是表单中⽂件的input名称,test.data是⽂件路径
提交⽂件的时候,同时提交其它POST请求,
curl -F upload_file=@test.data -F "name=yangqi" localhost/learing-curl/upload.php upload.php源代码:
$upload_file=$_FILES['upload_file']['tmp_name'];
$upload_file_name=$_FILES['upload_file']['name'];
move_uploaded_file($upload_file,"/tmp/$upload_file_name");
foreach ($_POST as $key => $value) {
echo "param $key : $value\n";
}
>
curl 保存cookie
-c 将会⽤标准格式保存cookie
curl - www.alibaba
查看会发现⼀堆cookie,接近1k
curl 带Cookie访问
curl -b “name=data” 或者让 curl - 可以带cookie访问页⾯。
先来看下测试页⾯的php源码:
setcookie("age",201);
echo "COOKIE IS \n";
foreach ($_COOKIE as $key => $value) {
echo "$key => $value\n";
}
>
先设置⼀个名为age的cookie,然后打印请求中的cookie。
我们请求下:
如果-b后⾯的参数没有出现=号,则会认为是⽂件名。
实例:
有道字典查询
通过-G -d 的形式提交⼀个get请求到有道字典,然后截取翻译信息。
curl -s -d "q=$KW&le=eng&p" -G "udao/search" | grep -A 5 'class="trans-container"' | grep '
' | sed -e 's:[]::g'
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论