curl命令的使用

最近公司和另外一个公司合作,该公司会定期给我们公司传送一批对我们公司有用的产品信息数据,并且要保存到数据库中,以备将来所用,当然这个任务就落在了我的身上。很快就写好了模型(用来保存产品信息的数据模型)以及接口函数,接口函数是以POST方式接收数据,写完接口函数后当然就是测试了,但是之前没测试过以post方式接收数据的api(原谅一个经验不丰富的人的无知。。。),但是还是让我找到了测试方法,不就是远程post方式提交表单嘛,网上很多例子,在此贴上我的代码,其实不难,理解了几个包的方法,这段代码还是很好理解的,如下

#coding=utf-8
import sys, urllib2, urllib,json
user_agent = ‘Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)‘
headers = { ‘User-Agent‘ : user_agent }
info = [
  {
    "id": 554888,
    "code": "85317",
    "partno": "xxx",
    "origin": "xxx",
    "product_name": "xxx",
    "type": "2"
  },
  {
  "id": 554113,
    "hs_code": "8230099",
    "partno": "xxx",
    "origin": "xxx",
    "product_name": "xxx",
    "type": "2"
  }
]

page = {"packetdata":info}
page = json.dumps(page)
url = ‘http://0.0.0.0:7000/api_recept_json_data/‘
data = urllib.urlencode(page)
req = urllib2.Request(url,data,headers)

fd = urllib2.urlopen(req,data)

print fd.read()

然后运行这段代码,发现如果数据格式没错的话接收数据成功,而且数据库中会生成相应的记录,接着就是测试修复bug,增加异常处理机制等等,尽量使它能够处理各种在传送数据过程中出现的异常。然后就去向经理汇报,演示,经理看我演示完后,然后跟我说,这个测试代码有点不专业,叫我去了解一下curl命令。然后就在网上找资料学习,发现它确实是一个功能很强大的命令,个人觉得每个web后端开发人员都应该要掌握它。

curl命令可以看作是命令行浏览器,作用是发出网络请求,然后得到和提交数据,显示在标准输出上面,支持多种协议。

(1)查看网页源码

直接在curl命令后加上网址,就可以看到网页源码。我们以网址http://www.baidu.com为例,

curl  http://www.baidu.com

如果要把这个网页保存下来,可以使用-o参数,curl -o [文件名] URL

如果文件不存在,会自动创建的,如果想同时获取多个文件,可使用命令

curl -o [文件名1]  URL  -o [文件名2] URL

-O参数,使用URL中默认文件名保存到本地

(2) 自动跳转

有的网址是自动跳转的。使用-L参数,curl就会跳转到新的网址。

比如有些网址,只有登陆了才能访问一些页面内容,此时加上这个参数,会直接跳转到登陆页面,然后获取登陆页面的源码

(3)显示头信息

-i参数可以显示http response的头信息,连同网页代码一起。

-I参数则只显示头信息

(4)显示通信过程

-v参数可以显示一次http通信的整个过程,包括端口连接和http request头信息。

如果你觉得上面的信息还不够,那么下面的命令可以查看更详细的通信过程。

  curl --trace output.txt  URL

或者

  curl --trace-ascii output.txt  URL

运行后,请打开output.txt文件查看。

(5)发送表单信息

发送表单信息有GET和POST两种方法。GET方法相对简单,只要把数据附在网址后面就行。

  curl tvbs.cc/form.cgi?data=xxx

POST方法必须把数据和网址分开,curl就要用到--data参数。

  比如上面例子可用如下形式命令

 curl --data "packetage=[{"id": 554888,"code": "85317","partno": "xxx","origin": "xxx","product_name": "xxx","type": "2"},{"id": 554113,"hs_code": "8230099","partno": "xxx","origin": "xxx","product_name": "xxx","type": "2"}]"   http://0.0.0.0:7000/api_recept_json_data/

如果你的数据没有经过表单编码,还可以让curl为你编码,参数是--data-urlencode。

如果该接口需要授权才能访问,就需要-u选项提供用户名和密码进行授权      

curl -u username:password URL

(6)文件上传

可以用curl这样上传文件:

  curl --form [email protected] --form press=OK [URL]

(7)Referer字段

有时你需要在http request头信息中,提供一个referer字段,表示你是从哪里跳转过来的。

  curl --referer URL

(8)User Agent字段

这个字段是用来表示客户端的设备信息。服务器有时会根据这个字段,针对不同设备,返回不同格式的网页,比如手机版和桌面版。

比如下面的User Agent是

‘Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)‘

curl可以这样模拟:

  curl --user-agent "[User Agent]" [URL]

(9)cookie

使用--cookie参数,可以让curl发送cookie。

  curl --cookie "name=xxx"  URL

至于具体的cookie的值,可以从http response头信息的Set-Cookie字段中得到。

(10)增加头信息

有时需要在http request之中,自行增加一个头信息。--header参数就可以起到这个作用。

  curl --header "xxx: xxxxxx" URL

十一、HTTP认证

有些网域需要HTTP认证,这时curl需要用到--user/-u参数,前面提到过。

  curl --use/-ur name:password  URL

时间: 2024-11-02 17:19:00

curl命令的使用的相关文章

Linux系统curl命令

curl命令 curl  -I  网址    //-I :省略源代码查看,内容如下: 我们查看的是HTTP/1.1 200 OK 这一行 常用状态吗有:200 301 302 404 403 502 503 上述状态码中,只有  200 是OK 的 如果出现301 302 ,它可能是因为在服务端设置了  跳转 ,内容如下: 上图显示,HTTP/1.1 301 设置了跳转,跳转到了下面:Location:http://www.aminglinux.com/bbs/forum.php -x  可以指

curl 命令获取网络网站的响应码

curl命令参数很多,博主很多都没有用过.今天发现可以用-w参数挺好用的. -w:--write-out,作用就是输出点什么.curl的-w参数用于在一次完整且成功的操作后输出指定格式的内容到标准输出.输出格式由普通字符串和任意数量的变量组成,输出变量需要按照%{variable_name}的格式,如果需要输出%,double一下即可,即%%,同时,\n是换行,\r是回车,\t是TAB.curl会用合适的值来替代输出格式中的变量,所有可用变量如下: url_effective 最终获取的url地

curl 命令详解

curl命令是一个利用URL规则在命令行下工作的文件传输工具.它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具.作为一款强力工具,curl支持包括HTTP.HTTPS.ftp等众多协议,还支持POST.cookies.认证.从指定偏移处下载部分文件.用户代理字符串.限速.文件大小.进度条等特征.做网页处理流程和数据检索自动化,curl可以祝一臂之力. -a/--append 上传文件时,附加到目标文件 -A/--user-agent 设置用户代理发送给服务器 -an

Windows下安装使用curl命令

本机环境 Windows 7 方法/步骤 1.进入网站 https://curl.haxx.se/download/?C=M;O=D网站 2.根据自己的操作系统位数和是否需要SSL下载相应的版本. 这里下载curl-7.33.0-win64-ssl-sspi.zip,下载完成之后解压到需要使用curl命令的目录.这里为了方便我先直接解压到当前目录. 3.在本窗口下打开运行该命令 [没有建立系统环境变量,所以只能在本目录下运行],检测是否可以正常运行 注意: 想得到上面的"在此处打开命令窗口(W)

windows(64位)下使用curl命令

Curl命令可以通过命令行的方式,执行Http请求.在Elasticsearch中有使用的场景,因此这里研究下如何在windows下执行curl命令. 工具下载 在官网处下载工具包:http://curl.haxx.se/download.html 使用方式一:在curl.exe目录中使用 解压下载后的压缩文件,通过cmd命令进入到curl.exe所在的目录. 由于博主使用的是windows 64位 的系统,因此可以使用I386下的curl.exe工具. 进入到该目录后,执行curl --hel

grep命令和curl命令的使用方法

今天看了汪海写的python爬虫教程,说实话看不懂...于是就用bash下的工具自己开始写了一个抓取糗事百科的糗事的脚本,期间搜索到了grep和curl命令的一些使用技巧. grep命令,使用grep命令来进行文本的通配,一般只是显示匹配的行,但是使用以下几个参数就可以显示上下文了: -C [num] #显示匹配行的上下各num行 -A [num] #显示匹配行的后num行 -B [num] #显示匹配行的前num行 curl这个下载工具,或者已经算不上是下载工具了,因为curl过于强大了,主要

curl 命令

curl命令是一个利用URL规则在命令行下工作的文件传输工具.它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具.作为一款强力工具,curl支持包括HTTP.HTTPS.ftp等众多协议,还支持POST.cookies.认证.从指定偏移处下载部分文件.用户代理字符串.限速.文件大小.进度条等特征.做网页处理流程和数据检索自动化,curl可以祝一臂之力. 语法 curl (选项) (参数) 选项 -a/--append -A/--user-agent <agent st

curl命令详解

对于windows用户如果用Cygwin模拟unix环境的话,里面没有带curl命令,要自己装,所以建议用Gow来模拟,它已经自带了curl工具,安装后直接在cmd环境中用curl命令就可,因为路径已经自动给你配置好了. linux curl是一个利用URL规则在命令行下工作的文件传输工具.它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具. 一,curl命令参数,有好多我没有用过,也不知道翻译的对不对,如果有误的地方,还请指正. -a/--append 上传文件时,附

curl命令具体解释

对于windows用户假设用Cygwin模拟unix环境的话,里面没有带curl命令,要自己装,所以建议用Gow来模拟,它已经自带了curl工具,安装后直接在cmd环境中用curl命令就可,由于路径已经自己主动给你配置好了. linux curl是一个利用URL规则在命令行下工作的文件传输工具.它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具. 一,curl命令參数,有好多我没实用过,也不知道翻译的对不正确,假设有误的地方,还请指正. -a/--append 上传文件

Linux Shell学习--curl命令详解

curl命令详解 (1).curl介绍 作为一款强力工具,curl支持包括HTTP.HTTPS.FTP在内的众多协议.它还支持POST.cookie.认证.从指定偏移处下载部分文件.参照页(referer).用户代理字符串.扩展头部.限速.文件大小限制.进度条等特性.如果要和网页访问序列(web page usagesequence)以及数据检索自动化打交道,那么curl定能助你一臂之力. (2).curl的help curl --help Usage: curl [options...] <u