加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

卷曲选项等同于Net.Webclient的“useDefaultCredentials”

发布时间:2020-12-14 02:20:06 所属栏目:Linux 来源:网络整理
导读:我尝试在php脚本中使用curl访问web: $ch = curl_init();curl_setopt($ch,CURLOPT_URL,"https://www.google.fr");curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);$result = curl_exec($ch);if (curl_errno($ch)) { echo 'Error:' . curl_error($ch);}curl_close
我尝试在php脚本中使用curl访问web:
$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,"https://www.google.fr");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}

curl_close ($ch);

它返回:

Failed to connect to www.google.fr port 443: Connection refused

这是正常的,我是一个代理,它需要我的Windows凭据(NTLM)允许互联网流量.

在MS Powershell中,这可行:

$request = New-Object System.Net.WebCLient
$request.UseDefaultCredentials = $true
$request.Proxy.Credentials = $request.Credentials
$request.DownloadFile($url,$path)

使用“DefaultCredentials”(= Windows Credentials)并将它们发送到代理允许我访问Web.但我现在不知道它是如何工作的.

如果我使用Firefox导航,Firefox总是会添加一个Proxy-Authorization标头,其值为:Negociate blablablablababalazdlad …

我想将.NET useDefaultCredentials解决方案转换为cURL,我试过:

$ch = curl_init();

curl_setopt($ch,1);

curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_NTLM );
curl_setopt($ch,CURLOPT_PROXYAUTH,CURLAUTH_NTLM );

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}

curl_close ($ch);

没有成功

解决方法

如果它是在启用“SSPI”支持的情况下构建的,则curl可以执行此操作.您可以在提示符上运行curl -V来检查.或者php -i或者调用phpinfo();来自PHP本身.

有了SSPI

您将CURLOPT_PROXYUSERPWD选项设置为空白用户/密码(除了其他选项)只是为了触发身份验证,但它将为您获取默认凭据:

curl_setopt($ch,CURLOPT_PROXYUSERPWD,":" );

完整的代码看起来如下所示.另请注意,CURLOPT_HTTPAUTH用于对远程服务器进行身份验证,而不是代理.而且我认为你不太可能想要谷歌的HTTP身份验证……

$ch = curl_init();

curl_setopt($ch,1);
curl_setopt($ch,CURLOPT_PROXY,"http://proxyhost.example.com:8080/");
curl_setopt($ch,":" );

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}

curl_close ($ch);

没有SSPI

然后curl无法找出默认凭据,而是必须使用CURLOPT_PROXYUSERPWD选项设置用户名和密码,如下所示:

curl_setopt($ch,"clark%20kent:superman");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读