当前位置: 首页 > news >正文

趣解curl

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访问所使用的proxy服务器及其端口: -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

这样,服务器端接到访问的要求,会认为你是一个运行在Windows 2000上的 IE6.0,嘿嘿嘿,其实也许你用的是苹果机呢!

而"Mozilla/4.73 [en] (X11; U; Linux 2.2; 15 i686"则可以告诉对方你是一台 PC上跑着的Linux,用的是Netscape 4.73,呵呵呵

7)另外一个服务器端常用的限制方法,就是检查http访问的referer。比如你先访问首页,再访问里面所指定的下载页,这第二次访问的 referer地址就是第一次访问成功后的页面地址。这样,服务器端只要发现对下载页面某次访问的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

这样,就可以骗对方的服务器,你是从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

这样,就可以按照服务器上的文件名,自动存在本地了!

再来一个更好用的。

如果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://www.cnblogs.com/wangdaijun/p/5999486.html

相关文章:

  • CentOS更改yum源与更新系统
  • C#基础系列:开发自己的窗体设计器(PropertyGrid显示中文属性名)
  • CSS3盒模型-display:box
  • 2016 10 28考试 dp 乱搞 树状数组
  • Mac 下安装运行Rocket.chat
  • 阶段2-新手上路\项目-移动物体监控系统\Sprint1-声音报警子系统开发\第3节-嵌入式播放器移植...
  • 如何一步一步用DDD设计一个电商网站(二)—— 项目架构
  • Java各种排序算法详解
  • php底层运行原理
  • python之map、filter、reduce、lambda函数 转
  • Linux 命令行总结
  • jquery.spinner数字智能加减插件源代码效果
  • 关键字提取算法TF-IDF
  • 微软Madoko常见问题总结
  • 【Python基础学习二】定义变量、判断、循环、函数基本语法
  • [LeetCode] Wiggle Sort
  • [NodeJS] 关于Buffer
  • Android 架构优化~MVP 架构改造
  • CODING 缺陷管理功能正式开始公测
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Elasticsearch 参考指南(升级前重新索引)
  • GraphQL学习过程应该是这样的
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • java正则表式的使用
  • k8s如何管理Pod
  • LeetCode18.四数之和 JavaScript
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • TypeScript实现数据结构(一)栈,队列,链表
  • ucore操作系统实验笔记 - 重新理解中断
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 力扣(LeetCode)357
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 盘点那些不知名却常用的 Git 操作
  • 数据仓库的几种建模方法
  • 因为阿里,他们成了“杭漂”
  • 用Visual Studio开发以太坊智能合约
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #define用法
  • $refs 、$nextTic、动态组件、name的使用
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (Python第六天)文件处理
  • (windows2012共享文件夹和防火墙设置
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)ssm考生评分系统 毕业设计 071114
  • .bat批处理出现中文乱码的情况
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET 反射 Reflect
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 设计一套高性能的弱事件机制
  • .Net面试题4
  • @Bean, @Component, @Configuration简析
  • [1525]字符统计2 (哈希)SDUT
  • [BZOJ 2142]礼物(扩展Lucas定理)