相关疑难解决方法(0)

编码空格字符的URL:+或%20?

何时将URL中的空格编码为+,何时将其编码为%20

url url-encoding

681
推荐指数
5
解决办法
63万
查看次数

如何在Python中对URL参数进行百分比编码?

如果我做

url = "http://example.com?p=" + urllib.quote(query)
Run Code Online (Sandbox Code Playgroud)
  1. 它不编码/%2F(休息OAuth的标准化)
  2. 它不处理Unicode(它抛出异常)

有更好的图书馆吗?

python url encoding urllib urlencode

277
推荐指数
5
解决办法
23万
查看次数

如何在Bash中对字符串中的每个字符执行for循环?

我有一个像这样的变量:

words="??????"
Run Code Online (Sandbox Code Playgroud)

我想打一个for循环的每个字符,一次一个,例如第一的character="?",那么character="?",character="?"

我知道的唯一方法是将每个字符输出到文件中的单独行,然后使用while read line,但这似乎非常低效.

  • 如何通过for循环处理字符串中的每个字符?

bash for-loop

66
推荐指数
9
解决办法
10万
查看次数

使用CURL和编码的URL删除

我正在尝试使用CURL这样的请求:

curl -X DELETE "https://myhost/context/path/users/OXYugGKg207g5uN/07V" 
Run Code Online (Sandbox Code Playgroud)

哪里OXYugGKg207g5uN/07V是哈希,所以我想我需要在执行此请求之前进行编码.

我试过了 curl -X DELETE --data-urlenconded "https://myhost/context/path/users/OXYugGKg207g5uN/07V"

一些想法?

url encoding curl request http-delete

52
推荐指数
2
解决办法
7万
查看次数

如何在shell中解码URL编码的字符串?

我有一个文件,其中包含编码的用户代理列表.例如:

Mozilla%2F5.0%20%28Macintosh%3B%20U%3B%20Intel%20Mac%20OS%20X%2010.6%3B%20en
Run Code Online (Sandbox Code Playgroud)

我想要一个shell脚本,它可以读取该文件并写入带有解码字符串的新文件.

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用这个例子来实现它,但到目前为止还没有工作.

$ echo -e "$(echo "%31+%32%0A%33+%34" | sed 'y/+/ /; s/%/\\x/g')"
Run Code Online (Sandbox Code Playgroud)

我的脚本看起来像:

#!/bin/bash
for f in *.log; do
  echo -e "$(cat $f | sed 'y/+/ /; s/%/\x/g')" > y.log
done
Run Code Online (Sandbox Code Playgroud)

bash shell awk sed urldecode

37
推荐指数
12
解决办法
5万
查看次数

在shell脚本中获取第一个Google搜索结果的网址

使用脚本语言解析AJAX API的输出相对容易:

#!/usr/bin/env python

import urllib
import json

base = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&'
query = urllib.urlencode({'q' : "something"})
response = urllib.urlopen(base + query).read()
data = json.loads(response)
print data['responseData']['results'][0]['url']
Run Code Online (Sandbox Code Playgroud)

但有没有更好的方法来做类似的基本shell脚本?如果你只是卷曲了API页面,你应该如何编码URL参数或解析JSON?

bash

9
推荐指数
2
解决办法
2万
查看次数

卷曲命令行编码HTTP PUT的查询参数

我有多个查询参数,我想使用curl在HTTP PUT操作中发送.如何编码查询参数?例:

$ curl -X PUT http://example.com/resource/1?param1=value%201&param2=value2
Run Code Online (Sandbox Code Playgroud)

如果'value 1'包含由shell解释的空格或其他字符,则该命令将无法正确解析.

unix rest curl web-services http

9
推荐指数
1
解决办法
6812
查看次数

在bash脚本中编码字符串的URL

我正在写一个bash脚本,我试图提交一个post变量,但是wget将它视为多个URL我相信因为它不是URLENCODED ...这是我的基本思想

MESSAGE='I am trying to post this information'
wget -O test.txt http://xxxxxxxxx.com/alert.php --post-data 'key=xxxx&message='$MESSAGE''
Run Code Online (Sandbox Code Playgroud)

我收到错误并且alert.php没有得到post变量加上它很难说

无法解决我无法解决我无法解决尝试..等等.

我上面的例子是一个简单的有点sudo示例,但我相信如果我可以对其进行url编码,它会通过,我甚至尝试过像:

MESSAGE='I am trying to post this information'
MESSAGE=$(php -r 'echo urlencode("'$MESSAGE'");')
Run Code Online (Sandbox Code Playgroud)

但PHP错误..任何想法?如何在没有php执行的情况下传递$ MESSAGE中的变量?

linux bash command-line wget urlencode

8
推荐指数
3
解决办法
2万
查看次数

从 GitLab 工件存档下载单个文件

我正在运行 GitLab CE 11.5.0,我的一项工作生成了一个工件,我想从中下载单个文件。

将完整的工件存档下载为 zip 文件,如下所述

$ export TOKEN="12345678"
$ export GITLAB_HOST="gitlab.example.com"
$ export PROJECT_ID="foo"
$ export JOB_NAME="bundle"
$ curl --header "PRIVATE-TOKEN: $TOKEN" \
  "https://$GITLAB_HOST/api/v4/projects/$PROJECT_ID/jobs/artifacts/master/download?job=$JOB_NAME" -o artifacts.zip
Run Code Online (Sandbox Code Playgroud)

存档内容如下所示:

$ unzip -l artifacts.zip
Archive:  artifacts.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
   262107  02-18-2019 16:17   build/ui-bundle.zip
---------                     -------
   262107                     1 file
Run Code Online (Sandbox Code Playgroud)

现在我只想从该存档中下载一个文件,如此处所述

$ export FILE_PATH="build/ui-bundle.zip"
$ curl --header "PRIVATE-TOKEN: $TOKEN" \
  "https://$GITLAB_HOST/api/v4/projects/$PROJECT_ID/jobs/artifacts/master/raw/$FILE_PATH?job=$JOB_NAME"
Run Code Online (Sandbox Code Playgroud)

但Gitlab似乎找不到请求的文件:

{"error":"404 Not Found"}
Run Code Online (Sandbox Code Playgroud)

我意识到工件存档是一个 zip 文件,仅包含一个嵌入式 zip 文件,但我认为这应该没有什么区别。

有人可以帮忙吗?

gitlab gitlab-ci gitlab-api

7
推荐指数
1
解决办法
2887
查看次数

如何从命令行到卷曲为特定时间设置任何特定nagios主机的停机时间?

我需要通过curl为命令行设置特定nagios主机的计划停机时间.我是这样做的吗?

这是我已经用于从命令行启用/禁用服务/主机通知的内容.

curl -d "some input here" url "user:pass" 
Run Code Online (Sandbox Code Playgroud)

就像我需要为计划停机时间做的那样.现在的问题是停机时间选项需要更多选项,即启动时间,结束时间,评论等.

那么如何通过命令行中的curl完成它呢?

curl -d " some key value pair(hostname,servicename" url "username:passowrd"
Run Code Online (Sandbox Code Playgroud)

这将从命令行打开和关闭服务/主机通知.所以我想以这种方式使用curl来为特定的nagios服务器提供停机时间.

上面的脚本不起作用,因为nagios的停机时间选项需要更多的参数,我试图在脚本中注入这些参数.但它没有那样做.我们也需要提供starttime,endtime和comment值.

另外,我已经尝试了curl的选项--form和--form-string with the script ...无法通过.

理想的想法是,不是去Nagios web界面,我们想从命令行完成这件事(我们已经成功完成了服务/主机服务和通知).

希望我现在绝对清楚.

TIA

巴斯卡尔

curl nagios http-post

5
推荐指数
2
解决办法
2万
查看次数

混合curls --data-binary 和编码 url-search 参数的能力

我想使用curl发出发布请求。正文是一个二进制文件,但我也希望curl 对 url 搜索参数进行编码。

curl --request POST \
     --header 'Content-Type:application/octet-stream' \
     --data-binary "@file.txt" \ # The body part, raw, not encoded
     --data-urlencode "name=john" \ # The url-search-param part, encoded
     "https://example.com"
Run Code Online (Sandbox Code Playgroud)

问题是,curl 将其视为--data-urlencode正文的一部分,我想要的是将其name=john附加到 url 部分,如下所示:https://example.com?name=john--data-binary部分作为正文发送POST。(实际上,搜索参数是一个带有“无效”url 字符的字符串,需要对其进行编码)

--data-urlencodeTLDR:我想像发出请求一样使用GET附加参数)并POST --data-binary设置实际POST主体。

快速的谷歌搜索为我提供了要使用的信息--get/-G但这会将请求转换为GET我不想要的请求,因此已经有十几个关于此的问题(但没有一个涵盖我的情况):

curl

4
推荐指数
1
解决办法
1369
查看次数

如何使用bash或curl将数据输入到URL中

如何对字符串进行urlencode并将其嵌入到URL中?请注意,我并不是要获取或发布数据,因此curl 的-Gand --data--data-urlencode选项似乎并没有起作用。

例如,如果您使用

curl -G http://example.com/foo --data-urlencode "bar=spaced data"
Run Code Online (Sandbox Code Playgroud)

在功能上等同于

curl http://example.com/foo?bar=spaced%20data"
Run Code Online (Sandbox Code Playgroud)

这是不希望的。

我有一个foo/bar必须经过urlencode foo%2fbar并嵌入到URL中的字符串。

curl http://example.com/api/projects/foo%2fbar/events
Run Code Online (Sandbox Code Playgroud)

一个假设的解决方案(如果我可以找到类似的东西)将是在bash中预处理数据(如果存在某种urlencode功能的话)。

DATA=foo/bar
ENCODED=`urlencode $DATA`
curl http://example.com/api/projects/${ENCODED}/events
Run Code Online (Sandbox Code Playgroud)

另一个假设的解决方案(如果我能找到类似的东西)将是卷曲的切换,类似于以下内容:

curl http://example.com/api/projects/{0}/events --string-urlencode "0=foo/bar"
Run Code Online (Sandbox Code Playgroud)

我正在寻找这个问题的答案的特定原因是Gitlab API。例如,gitlab get单个项目 NAMESPACE/PROJECT_NAME是URL编码的,例如。/api/v3/projects/diaspora%2Fdiaspora(其中/以表示%2F)。除此之外,您可以请求项目中的各个属性,因此最终得到一个URL,例如http://example.com/projects/diaspora%2Fdiaspora/events

尽管这个问题是特定于gitlab的,但我想它通常总体上适用于REST API,而令我惊讶的是我找不到关于stackoverflow或Internet搜索的预先存在的答案。

bash curl urlencode

2
推荐指数
1
解决办法
8692
查看次数

以可移植的方式在 shell 脚本中对字符串进行 URL 编码

我需要使用将在 BusyBox Ash、Dash、Bash 和 ZSH 中运行的 shell 函数对字符串进行 URL 编码。

\n\n

它将在不同的 Docker 容器中运行,因此安装尽可能少的依赖项会更好。

\n\n

笔记:

\n\n
    \n
  • 问题“在 bash 脚本中对字符串进行 URL 编码”要求提供特定于 Bash 的脚本,唯一提供的答案取决于容器上安装的 PHP。

  • \n
  • 问题“如何为curl命令对数据进行urlencode? ”特定于curl,但肯定对非特定答案开放。然而,这 25 个答案似乎都不适用。那里的答案之一只能将数据发送到curl,而有些特定于bashksh,其他一些则需要Perl PHP Python Lua NodeJS Ruby gridsite -clientsuni2asciijqawksed安装。其中之一不需要额外的依赖项,但不保留a1和 等字符~

  • \n
\n\n

我期望得到什么:

\n\n
$> urlencode \'/\'\n%2f\n\n$> urlencode \'\xc3\xa7\'\n%c3%a7\n\n$> …
Run Code Online (Sandbox Code Playgroud)

linux shell posix urlencode

2
推荐指数
1
解决办法
8101
查看次数