当前位置:网站首页>curl 命令
curl 命令
2022-07-06 17:56:00 【全栈程序员站长】
大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。
它可以被认为是一个命令行的浏览器
1、开放gzip求 curl -I http://www.sina.com.cn/ -H Accept-Encoding:gzip,defalte
2、监控网页的响应时间 curl -o /dev/null -s -w “time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n” “http://www.kklinux.com”
3. 监控网站可用性 curl -o /dev/null -s -w %{http_code} “http://www.kklinux.com”
4、以http1.0协议请求(默觉得http1.1) curl -0 ………….. 1)读取网页 curl linuxidc.com”>http://www.linuxidc.com 2)保存网页 curl -o page.html http://www.linuxidc.com 3)使用的proxyserver及其port:-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 -b cookie0001.txt http://www.linuxidc.com
6)浏览器信息~~~~ 任意指定自己这次訪问所宣称的自己的浏览器信息: -A curl -A “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)” -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.yahoo.com 这样,server端接到訪问的要求,会觉得你是一个执行在Windows 2000上的IE6.0,嘿嘿嘿。事实上或许你用的是苹果机呢! 而”Mozilla/4.73 [en] (X11; U; Linux 2.2; 15 i686″则能够告诉对方你是一台PC上跑着的Linux。用的是Netscape 4.73,呵呵呵
7) 另外一个server端经常使用的限制方法,就是检查http訪问的referer。
比方你先訪问首页,再訪问里面所指定的下载页,这第二次訪问的referer地址就是第一次訪问成功后的页面地 址。这样。server端仅仅要发现对下载页面某次訪问的referer地址不 是首页的地址,就能够断定那是个盗连了~~~~~ 讨厌讨厌~~~我就是要盗连~~~~~!! 幸好curl给我们提供了设定referer的option: -e curl -A “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)” -x 123.45.67.89:1080 -e “mail.yahoo.com” -o page.html -D cookie0001.txt http://www.yahoo.com 这样,就能够骗对方的server,你是从mail.yahoo.com点击某个链接过来的了,呵呵呵
8)curl 下载文件 刚才讲过了。下载页面到一个文件中。能够使用 -o 。下载文件也是一样。
比方, curl -o 1.jpg http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG 这里教大家一个新的option: -O 大写的O。这么用: curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG 这样,就能够依照server上的文件名称。自己主动存在本地了!
再来一个更好用的。
假设screen1.JPG以外还有screen2.JPG、screen3.JPG、….、screen10.JPG须要下载,难不成还要让我们写一个script来完毕这些操作? 不干! 在curl里面,这么写就能够了: curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG 呵呵呵。厉害吧?!~~~ 9) 再来,我们继续解说下载! curl -O http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG 这样产生的下载。就是 ~zzh/001.JPG ~zzh/002.JPG … ~zzh/201.JPG ~nick/001.JPG ~nick/002.JPG … ~nick/201.JPG 够方便的了吧?哈哈哈 咦?高兴得太早了。 因为zzh/nick下的文件名称都是001。002…,201。下载下来的文件重名,后面的把前面的文件都给覆盖掉了~~~ 没关系。我们还有更狠的!
curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG –这是…..自己定义文件名称的下载? –对头,呵呵! #1是变量,指的是{zzh,nick}这部分,第一次取值zzh,第二次取值nick #2代表的变量,则是第二段可变部分—[001-201],取值从001逐一加到201 这样。自己定义出来下载下来的文件名称,就变成了这样: 原来: ~zzh/001.JPG —> 下载后: 001-zzh.JPG 原来: ~nick/001.JPG —> 下载后: 001-nick.JPG 这样一来,就不怕文件重名啦,呵呵
9) 继续讲下载 我们平时在windows平台上,flashget这种工具能够帮我们分块并行下载,还能够断线续传。 curl在这些方面也不输给谁。嘿嘿 比方我们下载screen1.JPG中,突然掉线了,我们就能够这样開始续传 curl -c -O http://cgi2.tky.3wb.ne.jp/~zzh/screen1.JPG 当然。你不要拿个flashget下载了一半的文件来糊弄我~~~~别的下载软件的半截文件可不一定能用哦~~~ 分块下载,我们使用这个option就能够了: -r 举例说明 比方我们有一个http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 要下载(赵老师的电话朗诵 :D ) 我们就能够用这种命令: curl -r 0-10240 -o “zhao.part1” http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\ curl -r 10241-20480 -o “zhao.part1” http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\ curl -r 20481-40960 -o “zhao.part1” http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\ curl -r 40961- -o “zhao.part1” http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 这样就能够分块下载啦。 只是你须要自己把这些破碎的文件合并起来 假设你用UNIX或苹果。用 cat zhao.part* > zhao.mp3就能够 假设用的是Windows,用copy /b 来解决吧。呵呵 上面讲的都是http协议的下载,事实上ftp也一样能够用。
使用方法嘛, curl -u name:passwd ftp://ip:port/path/file 或者大家熟悉的 curl ftp://name:[email protected]:port/path/file 10)上传的option是 -T 比方我们向ftp传一个文件: curl -T localfile -u name:passwd ftp://upload_site:port/path/ 当然,向httpserver上传文件也能够 比方 curl -T localfile http://cgi2.tky.3web.ne.jp/~zzh/abc.cgi 注意,这时候。使用的协议是HTTP的PUT method 刚才说到PUT,嘿嘿。自然让老服想起来了其它几种methos还没讲呢!
GET和POST都不能忘哦。
http提交一个表单,比較经常使用的是POST模式和GET模式 GET模式什么option都不用,仅仅须要把变量写在url里面就能够了 比方: curl http://www.yahoo.com/login.cgi?
user=nickwolfe&password=12345 而POST模式的option则是 -d 比方,curl -d “user=nickwolfe&password=12345” http://www.yahoo.com/login.cgi 就相当于向这个网站发出一次登陆申请~~~~~ 究竟该用GET模式还是POST模式,要看对面server的程序设定。 一点须要注意的是,POST模式下的文件上的文件上传,比方 <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> 这样一个HTTP表单,我们要用curl进行模拟,就该是这种语法: curl -F [email protected] -F nick=go http://cgi2.tky.3web.ne.jp/~zzh/up_file.cgi 罗罗嗦嗦讲了这么多,事实上curl还有非常多非常多技巧和使用方法 比方 https的时候使用本地证书。就能够这样 curl -E localcert.pem https://remote_server 再比方,你还能够用curl通过dict协议去查字典~~~~~ curl dict://dict.org/d:computer
今天为了检查全部刺猬主机上全部域名是否有备案.在使用wget不爽的情况下,找到了curl这个命令行流量器命令.发现其对post的调用还是蛮好的.特别有利于对提交信息及变 更參数进行较验.对于我想将几十万域名到miibeian.gov.cn进行验证是否有备案信息非常实用.发现这篇文章非常不错,特为转贴. 我的目标: curl -d “cxfs=1&ym=xieyy.cn” http://www.miibeian.gov.cn/baxx_cx_servlet 在出来的信息中进行过滤,提取备案号信息,并设置一个标识位.将域名。备案号及标识位入库
用curl命令,post提交带空格的数据 今天偶然遇到一个情况。我想用curl登入一个网页,无意间发现要post的数据里带空格。
比方username为”abcdef”,password为”abc def”。当中有一个空格,依照我曾经的方式提交: curl -D cookie -d “username=abcdef&password=abc def” http://login.xxx.com/提示登入失败。
于是查看curl手冊man curl。找到: d/–data (HTTP) Sends the speci?ed data in a POST request to the HTTP server, in a way that can emulate as if a user has ?lled in a HTML form and pressed the submit button. Note that the data is sent exactly as speci?
ed with no extra processing (with all newlines cut off). The data is expected to be “url-encoded”. This will cause curl to pass the data to the server using the content-type application/x-www-form-urlencoded. Compare to -F/–form. If this option is used more than once on the same command line, the data pieces speci?
ed will be merged together with a separating &-letter. Thus, using ’-d name=daniel -d skill=lousy’ would generate a post chunk that looks like ’name=daniel&skill=lousy’. 于是改用: curl -D cookie -d “username=abcdef” -d “password=abc efg” http://login.xxx.com/这样就能成功登入了。
(责任编辑:飘飞的夜)
Curl是Linux下一个非常强大的http命令行工具。其功能十分强大。
1) 二话不说,先从这里開始吧。
$ curl http://www.linuxidc.com
回车之后,www.linuxidc.com 的html就稀里哗啦地显示在屏幕上了 ~
2) 嗯,要想把读过来页面存下来。是不是要这样呢?
$ curl http://www.linuxidc.com > page.html
当然能够,但不用这么麻烦的!
用curl的内置option就好,存下http的结果。用这个option: -o
$ curl -o page.html http://www.linuxidc.com
这样,你就能够看到屏幕上出现一个下载页面进度指示。等进展到100%,自然就 OK咯
3) 什么什么?!訪问不到?肯定是你的proxy没有设定了。
使用curl的时候,用这个option能够指定http訪问所使用的proxyserver及其port: -x
$ curl -x 123.45.67.89:1080 -o page.html http://www.linuxidc.com
4) 訪问有些站点的时候比較讨厌,他使用cookie来记录session信息。
像IE/NN这种浏览器,当然能够轻易处理cookie信息,但我们的curl呢?…..
我们来学习这个option: -D <— 这个是把http的response里面的cookie信息存到一个特别的文件里去
$ curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.linuxidc.com
这样,当页面被存到page.html的同一时候,cookie信息也被存到了cookie0001.txt里面了
5)那么。下一次訪问的时候。怎样继续使用上次留下的cookie信息呢?要知道,非常多站点都是靠监视你的cookie信息,来推断你是不是不按规矩訪问他们的站点的。
这次我们使用这个option来把上次的cookie信息追加到http request里面去: -b
$ curl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt -b cookie0001.txt http://www.linuxidc.com
这样,我们就能够差点儿模拟全部的IE操作,去訪问网页了!
6)略微等等 ~我好像忘记什么了 ~
对了!
是浏览器信息
有些讨厌的站点总要我们使用某些特定的浏览器去訪问他们。有时候更过分的是。还要使用某些特定的版本号 NND。哪里有时间为了它去找这些怪异的浏览器呢!
?
好在curl给我们提供了一个实用的option,能够让我们任意指定自己这次訪问所宣称的自己的浏览器信息: -A
$ curl -A “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)” -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.linuxidc.com
这样,server端接到訪问的要求,会觉得你是一个执行在Windows 2000上的 IE6.0,嘿嘿嘿。事实上或许你用的是苹果机呢!
而”Mozilla/4.73 [en] (X11; U; Linux 2.2; 15 i686″则能够告诉对方你是一台 PC上跑着的Linux。用的是Netscape 4.73,呵呵呵
7)另外一个server端经常使用的限制方法,就是检查http訪问的referer。比方你先訪问首页。再訪问里面所指定的下载页,这第二次訪问的 referer地址就是第一次訪问成功后的页面地址。这样。server端仅仅要发现对下载页面某次訪问的referer地址不是首页的地址。就能够断定那是个盗 连了 ~
讨厌讨厌 ~我就是要盗连 ~!
!
幸好curl给我们提供了设定referer的option: -e
$ curl -A “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)” -x 123.45.67.89:1080 -e “mail.linuxidc.com” -o page.html -D cookie0001.txt http://www.linuxidc.com
这样,就能够骗对方的server,你是从mail.linuxidc.com点击某个链接过来的了,呵呵呵
8)写着写着发现漏掉什么重要的东西了!
——- 利用curl 下载文件
刚才讲过了,下载页面到一个文件中。能够使用 -o 。下载文件也是一样。比方,
$ curl -o 1.jpg http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
这里教大家一个新的option: -O 大写的O,这么用:
$ curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
这样,就能够依照server上的文件名称,自己主动存在本地了!
再来一个更好用的。
假设screen1.JPG以外还有screen2.JPG、screen3.JPG、….、screen10.JPG须要下载,难不成还要让我们写一个script来完毕这些操作?
不干!
在curl里面。这么写就能够了:
$ curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG
呵呵呵。厉害吧?! ~
9)再来,我们继续解说下载。
$ curl -O http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG
这样产生的下载,就是
~zzh/001.JPG
~zzh/002.JPG
…
~zzh/201.JPG
~nick/001.JPG
~nick/002.JPG
…
~nick/201.JPG
够方便的了吧?哈哈哈
咦?高兴得太早了。
因为zzh/nick下的文件名称都是001,002…。201,下载下来的文件重名,后面的把前面的文件都给覆盖掉了 ~
没关系,我们还有更狠的!
$ curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG
—这是…..自己定义文件名称的下载? —对头,呵呵。
这样。自己定义出来下载下来的文件名称。就变成了这样:原来: ~zzh/001.JPG —-> 下载后: 001-zzh.JPG 原来: ~nick/001.JPG —-> 下载后: 001-nick.JPG
这样一来,就不怕文件重名啦,呵呵
终点
版权声明:本文博主原创文章。博客,未经同意不得转载。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116887.html原文链接:https://javaforall.cn
边栏推荐
- golang中的Mutex原理解析
- Metauniverse urban legend 02: metaphor of the number one player
- 【js】获取当前时间的前后n天或前后n个月(时分秒年月日都可)
- 子网划分、构造超网 典型题
- What does security capability mean? What are the protection capabilities of different levels of ISO?
- Case development of landlord fighting game
- 实现mysql与ES的增量数据同步
- Taro中添加小程序 “lazyCodeLoading“: “requiredComponents“,
- Make Jar, Not War
- C语言实例_2
猜你喜欢
Force buckle 1037 Effective boomerang
2022 Google CTF SEGFAULT LABYRINTH wp
Dark horse notes - create immutable sets and streams
Yunna | work order management measures, how to carry out work order management
【信号与系统】
【案例分享】网络环路检测基本功能配置
Transplant DAC chip mcp4725 to nuc980
Installation of gazebo & connection with ROS
1123. 最深叶节点的最近公共祖先
ClickHouse字段分组聚合、按照任意时间段粒度查询SQL
随机推荐
Yunna | work order management software, work order management software app
Force buckle 1037 Effective boomerang
Atomic in golang and CAS operations
Sword finger offer II 035 Minimum time difference - quick sort plus data conversion
Gnet: notes on the use of a lightweight and high-performance go network framework
Instructions for using the domain analysis tool bloodhound
Add the applet "lazycodeloading": "requiredcomponents" in taro,
Share a general compilation method of so dynamic library
ClickHouse字段分组聚合、按照任意时间段粒度查询SQL
NEON优化:矩阵转置的指令优化案例
斗地主游戏的案例开发
Dynamic planning idea "from getting started to giving up"
The cost of returning tables in MySQL
[JS] obtain the N days before and after the current time or the n months before and after the current time (hour, minute, second, year, month, day)
[Niuke] b-complete square
What does front-end processor mean? What is the main function? What is the difference with fortress machine?
Typical problems of subnet division and super network construction
LLDP兼容CDP功能配置
go-zero微服务实战系列(九、极致优化秒杀性能)
搭建【Redis in CentOS7.x】