我目前正在尝试在我的 Discord 频道上发布一条消息,尝试使用 cURL POST 类型。我在运行代码时遇到的问题是它给了我一个 401 错误,说我未经授权。我正在使用 xampp localhost 在网络服务器上运行我的 PHP 代码。我还尝试通过 URL 链接(https://discordapp.com/oauth2/authorize?client_id=MYAPPLICATIONID&scope=bot&permissions=8)授权我的应用程序机器人,并成功地将机器人添加到我的频道中。看看我的代码
$data = array("Authorization: Bot" => $clientSecret, 'content' => 'Test Message');
$data_string = json_encode($data);
$ch = curl_init('https://discordapp.com/api/v6/channels/'.$myChannel.'/messages');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$answer = curl_exec($ch);
echo $answer;
if (curl_error($ch)) {
echo curl_error($ch);
}
Run Code Online (Sandbox Code Playgroud)
我从应用程序页面获取 $clientSecret 以显示我的客户端秘密令牌,而 $myChannel 是我的不和谐频道/服务器 ID。
注意:我已经根据这里给出的另一个 stackoverflow 答案对我的代码进行了建模 discord php curl login Fail 。所以我不确定我是否为应用程序机器人使用了正确的语法
我正在尝试使用 curl 访问 Facebook 登录页面。我的意图是登录到 facebook,然后做一些转义。由于最新的限制,我没有使用 facebook API……我需要抓取帖子的评论,而仅使用 API 是不可能的。
这是我的一些代码:
curl_setopt($ch, CURLOPT_URL,"https://web.facebook.com");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Run Code Online (Sandbox Code Playgroud)
我希望它重定向到登录页面,然后当用户填写登录表单时,我将获取凭据并使用它们重定向到主页并开始抓取。
无论如何,这就是我得到的:

我正在尝试获取 html 作为响应,但它仅适用于邮递员而不适用于 php。在 php 中,我得到不同的响应,例如“出现问题...”
我错过了什么?
这是代码:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://www.avnet.com/shop/SearchDisplay?searchTerm=LMK316BJ476ML-T&countryId=apac&deflangId=-1&storeId=715839038&catalogId=10001&langId=-1&sType=SimpleSearch&resultCatEntryType=2&searchSource=Q&searchType=100&avnSearchType=all",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Cache-Control: no-cache"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
Run Code Online (Sandbox Code Playgroud)
邮递员回复
PHP响应
提前致谢。
假设我想使用以下请求curl:
https://api.foobar.com/widgets?begin=2018-09-10T01:00:00+01:00&object={"name":"barry"}
Run Code Online (Sandbox Code Playgroud)
该字符串的 URL 编码版本如下所示:
https://api.foobar.com/widgets?begin=2018-09-10T01%3A00%3A00%2B01%3A00&object=%7B%22name%22%3A%22barry%22%7D
Run Code Online (Sandbox Code Playgroud)
当然,当我在命令行发出请求时,我更愿意查看外观更漂亮(但不是 URL 有效的)的第一个版本。我正在考虑使用一个bash脚本来拆分好的版本的不同部分,对相关部分进行编码,然后将其重新粘在一起,这样我就不必担心了。
例如,在对 , 进行几轮简单拆分?后&,=我可以轻松获得:
https://api.foobar.com/widgetsbegin2018-09-10T01:00:00+01:00object{"name":"barry"}之后,URL 对查询字符串的两个值进行编码并将它们全部粘在一起。我接受查询字符串中&和 的任何出现=都会破坏这种方法。
还有什么我应该担心的,可能会使这成为一个特别愚蠢的想法吗?
我正在努力使用一个小的 bash shell 脚本,该脚本应该列出我的 csv 文件并使用 curl 将它们上传到外部服务。当我将我的命令变量回显到控制台并执行它时,我工作正常,但是当我在我的脚本中执行它时,它会抱怨额外的 qouta “
我的脚本看起来像这样
#!/usr/bin/bash
LOGDIR="/var/log/tyk/"
FILE_EXSTENSION_NAME="*.csv"
CURLCMD="curl -k -i -H"
PORT="9992"
ENDPOINT="/endpoint"
URL="https://localhost"
for i in `ls $LOGDIR$FILE_EXSTENSION_NAME`; do
filename=`echo $i | awk -F "/" ' { print $5 }'`
echo $filename
CMD="$CURLCMD \"filename: $filename\" -F \"data=@$LOGDIR$filename\" $URL:$PORT$ENDPOINT"
$CMD
done
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到以下输出
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:--0curl: (6) Could …Run Code Online (Sandbox Code Playgroud) 我有一个非常特殊的问题。特别是,我想检索以下网站的内容: https://www.mycardtamoil.it/
据我了解,该网站的 SSL 证书存在一些问题。如果您在 Chrome 中打开它,则没有问题,但是如果您尝试通过 cURL ( curl https://www.mycardtamoil.it/)检索内容,则会在 ssl 上收到错误,该错误可以使用该选项绕过-k
当我转向 Python3 时,我无法绕过这个问题;我测试过的代码是:
import requests
response = requests.get('https://www.mycardtamoil.it/', verify=False)
Run Code Online (Sandbox Code Playgroud)
但我得到以下期望:
-------------------------------------------------- ------------------------- SysCallError Traceback (最近一次调用最后一次) C:\ProgramData\Anaconda3\lib\site-packages\urllib3\contrib\ pyopenssl.py in wrap_socket(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname) 440 try: --> 441 cnx.do_handshake() 442 除了 OpenSSL.SSL.WantReadError:
C:\ProgramData\Anaconda3\lib\site-packages\OpenSSL\SSL.py in do_handshake(self) 1906 result = _lib.SSL_do_handshake(self._ssl) -> 1907 self._raise_ssl_error(self._ssl, result) 1908
C:\ProgramData\Anaconda3\lib\site-packages\OpenSSL\SSL.py in _raise_ssl_error(self, ssl, result) 1631 raise SysCallError(errno, errorcode.get(errno)) -> 1632 raise SysCallError(-1, "意外的 EOF") 1633 否则:
SysCallError: (-1, '意外的 EOF') …
好的,我的开发人员和编码人员。上周我一直在尝试使用 Google (GCP) 云存储对象来解决这个问题。这是我的目标。
我已经尝试了 Google 文档中提到的 OAuth2.0 设置,但每次我想设置 OAuth2.0 密钥时,我都没有选择“离线”访问。最重要的是,它需要您输入将访问身份验证请求的源 URL。
此外,谷歌云存储不支持 key= 像他们的其他一些服务一样。所以这里我有一个用于我的项目的 API KEY 以及一个用于我的服务用户的 OAuth JSON 文件,但它们没有用。
我可以得到一个 curl 命令来处理临时 OAuth 不记名密钥,但我需要一个长期的解决方案。
RUN curl -X GET \
-H "Authorization: Bearer ya29.GlsoB-ck37IIrXkvYVZLIr3u_oGB8e60UyUgiP74l4UZ4UkT2aki2TI1ZtROKs6GKB6ZMeYSZWRTjoHQSMA1R0Q9wW9ZSP003MsAnFSVx5FkRd9-XhCu4MIWYTHX" \
-o "/home/shmac/test.tar.gz" \
"https://www.googleapis.com/storage/v1/b/mybucket/o/my.tar.gz?alt=media"
Run Code Online (Sandbox Code Playgroud)
允许我从任何位置下载 GCP 存储桶对象的长期密钥/ID/秘密。
authentication curl google-cloud-storage google-cloud-platform
我想直接将 json 对象从 url(json) 发布到另一个 url
所以命令如下:
curl "<resource_link>.json" -o sample.json
curl -X POST "<my_link>" "Content-type: application/json" -d @sample.json
Run Code Online (Sandbox Code Playgroud)
我想避免这种情况,那么解决方案是什么?是这样的吗?
curl -X POST "<my_link>" "Content-type: application/json" -d "curl <resource_link>.json"
Run Code Online (Sandbox Code Playgroud)
但它不起作用?此外,这个发布对另一个 cURL 命令的 Stream cURL 响应发布结果 并没有完全解释并且它不起作用是的,
卷曲
手册解释了“@”,但它没有解释如何使用另一个 curl 替代,如果我可以暂时将第一个 cURL 响应保存在某个地方并在另一个命令中使用它(但不在文件中)
我正在尝试获取 id 的值,即“id”:59,它以 json 的形式出现在 curl 输出中。下面是 json 中的 curl 输出:
[{"id":59,"description":"This is a demo project","name":"Demo_Project","name_with_namespace":"sam / Demo_Project","path":"demo_project","path_with_namespace":"sam/demo_project","created_at":"2020-03-02T08:43:13.664Z","default_branch":"master","tag_list":[],"ssh_url_to_repo":"ssh://git@od-test.od.com:2222/sam/demo_project.git","http_url_to_repo":"https://od-test.od.com/gitlab/sam/demo_project.git","web_url":"https://od-test.od.com/gitlab/sam/demo_project","readme_url":"https://od-test.od.com/gitlab/sam/demo_project/blob/master/README.md","avatar_url":null,"star_count":0,"forks_count":0,"last_activity_at":"2020-04-09T09:28:09.860Z","namespace":{"id":2259,"name":"sam","path":"sam","kind":"user","full_path":"sam","parent_id":null,"avatar_url":"https://secure.gravatar.com/avatar/755db8ssqaq50dcc9d189c53523b?s=80\u0026d=identicon","web_url":"https://od-test.od.com/gitlab/sam"}}]
Run Code Online (Sandbox Code Playgroud)
我正在使用python来解析json并获取id的值。我已尝试使用以下命令执行相同操作,但出现错误。
curl --header "PRIVATE-TOKEN: 9999ayayayar66" "https://od-test.od.com/gitlab/api/v4/search?scope=projects&search=demo_project" | python -c 'import sys, json; print(json.load(sys.stdin)["id"])'
Run Code Online (Sandbox Code Playgroud)
错误:
谁能帮我正确的python命令来获取id的值。提前致谢。
我在 Linux 上有一个 24x7 监控脚本,它试图在顽皮的 HTTP 端点随机失败时进行捕获。 curl命令失败被记录。
我们的命令: $ curl --verbose --fail --location --cookie cookiejar.txt --header 'Content-Type: application/json' --header 'X-TOKEN: XYZ' --request POST --data @body.json --dump-header response_headers.txt --output response_body.txt https://example.com/search 2> stderr.txt
(有趣的是,此命令不会向 STDOUT打印任何内容。)
由于我们正在发布数据,因此curl添加了标准请求标头Expect: 100-continue。因此,服务器响应以: 开头HTTP/1.1 100 Continue,但随后以以下任一方式结束(出错):
HTTP/1.1 504 Gateway TimeoutHTTP/1.1 500 Internal Server Error命令失败后,文件response_headers.txt太短(参见下面的示例)并且文件response_body.txt为空。此失败响应应返回标头和可选正文。如果我使用 Google Chrome 开发者工具,通常所有 HTTP 响应都有标头,包括错误 (5xx)。
问题:我是否遗漏了另一个curl命令参数来在继续失败时转储所有 HTTP 响应标头(和正文)?
我记得,在其他测试中,没有继续就失败的 HTTP GET …