gpt4 book ai didi

php - PHP 中的 cURL - 如何将 'copy as curl' 从 Chrome 转换为正确的 PHP

转载 作者:行者123 更新时间:2023-12-04 04:33:21 25 4
gpt4 key购买 nike

我一直在需要身份验证的站点上使用 cURL。我测试的最简单方法是使用 Chroms 的“copy as curl”命令将该信息直接粘贴到 shell 命令中以查看结果。

现在,我正在尝试在 PHP 中执行此操作,但我似乎无法弄清楚如何将命令转换为 PHP。如果有人能启发我如何获取命令的各个方面并使用它 PHP 中可用的 cURL 函数,我将不胜感激 这是一个直接从 bash 运行时工作的示例命令:

curl 'https://www.mytest.com/user/login.do' -H 'Origin: https://www.mytest.com' -H 'Accept-Encoding: gzip,deflate,sdch' -H 'Host: www.mytest.com' -H 'Accept-Language: en-US,en;q=0.8' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8' -H 'Referer: https://www.mytest.com/beg.do?' -H 'Cookie: rrrlb_*=(J2EL4341500)11761330; JSESSIONID=(J2EE11761500)ID1730172950DB2103704309' -H 'Connection: keep-alive' --data 'login=Log+On&UserId=my_user&nolog_password=mypassword' --compressed



谢谢

最佳答案

这似乎产生了有趣的结果:

$x = curl_init();

curl_setopt_array($x, [
CURLOPT_URL => 'https://www.mytest.com/user/login.do',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => 'login=Log+On&UserId=my_user&nolog_password=mypassword',
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HTTPHEADER => [
'Origin: https://www.mytest.com',
//'Accept-Encoding: gzip,deflate,sdch',
'Host: www.mytest.com',
//'Accept-Language: en-US,en;q=0.8',
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36',
//'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8',
'Referer: https://www.mytest.com/beg.do?',
]
]);

curl_exec($x);

您可能想看看 http://php.net/curl_setopt - 尽管页面有点密集,但大多数 cURL 功能都在此处记录。谷歌在这里特别有用:P

每个网络服务器都是不同的,对模糊选项的响应也不同,所以 YMMV,但我已经注释掉了标题 不要认为会对服务器的响应产生影响。

此外,您发布到 HTTPS 站点,这就是我设置 SSL_VERIFYPEER 的原因。至 false .您可能需要特别注意链接页面上的各种 HTTPS 选项。

最后,我强烈推荐使用 netcat作为一个简单的网络服务器来测试您的参数正在生成什么输出 - 运行例如 nc -lp 8000对于端口 8000,然后更改 curl命令和/或 PHP 脚本指向 localhost:8000 .请务必 ^C之前的 PHP nc (因为 netcat 不是网络服务器并且不会响应,所以 cURL 和/或 PHP 将只是坐在那里),否则你会触发一个旧的“网络传统”,如果服务器在客户端之前退出,内核 TCP/IP 堆栈会锁定该特定端口大约一分钟,然后才能重新使用它(实用的解决方案:使用另一个端口号)。

另外,请注意,我使用了(IMO 清洁器) [ ]数组的表示法,而不是 array( ) ,但此行为仅在最近的 PHP 版本中可用 - 如果您遇到语法错误,则您的 PHP 版本对于此语法来说太旧了。

关于php - PHP 中的 cURL - 如何将 'copy as curl' 从 Chrome 转换为正确的 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20180219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com