把今天遇到的一个实际问题简化一下,命令是:curl www.baidu.com/a/?expire=2&token=3,其中查询参数里面的 token 是必须有的,否则对方会报 403 。然后执行后发现居然响应是 403 ?加上 -vvv 看了一下,原来 curl 把我的命令给转化为了 curl www.baidu.com/a/?expire=2 & curl token=3,把 url 加引号后就正常了,也就是 curl "www.baidu.com/a/?expire=2&token=3"。感觉有点坑,也可能是我太菜了不知道这个。。。
1 CloudMx 2021-04-30 17:20:50 +08:00 ![]() 确实是你太菜导致了... |
![]() | 2 keepeye 2021-04-30 17:26:21 +08:00 ![]() 你不知道 & 在 linux 下是关键字吗?以及 && |
![]() | 3 keepeye 2021-04-30 17:26:50 +08:00 bash shell |
![]() | 4 nannanziyu 2021-04-30 17:29:36 +08:00 ?和&需要转义 curl www.baidu.com/a/\?expire=2\&token=3 |
![]() | 5 AstroProfundis 2021-04-30 17:30:49 +08:00 url 用引号包起来就行了 |
![]() | div class="fr"> 6 dalei 2021-04-30 17:32:50 +08:00 真的是你的问题。 |
![]() | 7 learningman 2021-04-30 17:33:38 +08:00 是你太菜了,不管是 cmd,powershell 还是 bash,&都是保留字 |
![]() | 8 madpecker009 2021-04-30 17:34:30 +08:00 @CloudMx 我就喜欢这样的评论 |
![]() | 9 zhoudaiyu OP PRO @CloudMx #1 @keepeye #2 @keepeye #3 @nannanziyu #4 @AstroProfundis #5 @dalei #6 @learningman #7 @madpecker009 #8 冤枉啊冤枉啊!是我的领导问的我,他想了+试了一下午没搞定然后问我,我想了 2 分钟试了一下告诉他了。。 |
![]() | 12 firebroo 2021-04-30 17:51:59 +08:00 确实是你太菜导致了... |
![]() | 13 ch2 2021-04-30 18:01:02 +08:00 一般字符串都要加引号 |
14 HenryGe 2021-04-30 18:03:22 +08:00 curl 百度要加 UA header, 不然会被拒。 |
15 deplives 2021-04-30 18:27:18 +08:00 via iPhone 那可确实是你太菜了 |
![]() | 16 zhoudaiyu OP PRO |
![]() | 20 love 2021-04-30 20:42:54 +08:00 命令行参数有一大堆符号加单引号是基本操作,否则可能有不可测效果(并不是只有&是 bash 特殊字符 |
21 aflow 2021-04-30 20:44:32 +08:00 直接写 curl 命令有点不方便,我都是用 postman 写完导出为 curl 命令的 |
![]() | 22 hljjhb 2021-04-30 21:25:19 +08:00 |
![]() | 26 BrettD 2021-05-01 01:56:52 +08:00 不是 curl 给你转换的,是 shell 给你转换的,curl 自己收到的命令就已经是转换后的了 |
27 laoyur 2021-05-01 08:09:36 +08:00 via Android append 甩锅也没用,看你帖文,你跟你老板差不多菜,哈哈哈 |
![]() | 28 imycc 2021-05-01 09:49:27 +08:00 用 zsh 你一个一个命令敲的话,会给你自动补齐一个转移的。但是直接张贴就不行了。。之前也经常犯错,然后养成习惯加个引号包起来 |
29 aloxaf 2021-05-01 15:45:32 +08:00 @imycc 原生 zsh 不会自动补转义符吧?粘贴时自动转义倒是确实有: autoload -Uz bracketed-paste-url-magic zle -N bracketed-paste bracketed-paste-url-magic |
30 liuxing 2021-05-04 21:55:22 +08:00 |
32 julyclyde 2021-05-08 14:22:17 +08:00 其实并不是 curl token=3 而是直接就 token=3 了 关于 curl 和&符号,前几年我见过 100 万美元的大事故 |