标签: php-curl

如何通过代理使用CURL?

我想设置curl使用代理服务器.网址由html表单提供,这不是问题.没有代理,它工作正常.我在这个和其他网站上找到了代码,但它们不起作用.任何帮助找到正确的解决方案将非常感激.我觉得波纹管很接近,但我错过了一些东西.谢谢.

我在这里改编的波纹管代码http://www.webmasterworld.com/forum88/10572.htm,但它返回了第12行丢失的T_VARIABLE的错误消息.

<?

$url = '$_POST[1]';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_PROXY, '66.96.200.39:80');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt ($ch, CURLOPT_HEADER, 1)
curl_exec ($ch); 
$curl_info = curl_getinfo($ch);
curl_close($ch);
echo '<br />';
print_r($curl_info);
?>
Run Code Online (Sandbox Code Playgroud)

波纹管从卷曲到代理返回没有内容

<?

$proxy = "66.96.200.39:80";
$proxy = explode(':', $proxy);
$url = "$_POST[1]";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXY, $proxy[0]);
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy[1]);
curl_setopt($ch, CURLOPT_HEADER, 1);

$exec = curl_exec($ch);

echo curl_error($ch);
print_r(curl_getinfo($ch));
echo …
Run Code Online (Sandbox Code Playgroud)

php proxy curl php-curl

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

如何在Ubuntu 16.04中安装php-curl

Ubuntu 16.04安装后升级到并面临问题PHP5.

安装PHP-5如下:

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install php5.5   # for PHP 5.5
Run Code Online (Sandbox Code Playgroud)

试图安装php-curl但它不起作用.

sudo apt-get install php5-curl
Run Code Online (Sandbox Code Playgroud)

错误:E:无法找到包php5-curl

php ubuntu curl php-curl ubuntu-16.04

59
推荐指数
4
解决办法
16万
查看次数

Ubuntu 18.04升级后无法安装php7.2-curl

从今天的16.04升级到18.04使用 do-release-upgrade -d

在升级过程中,我被告知将删除一些软件包,其中包括:

删除:libperl5.22 lxc-common perl-modules-5.22 php-imagick
php7.1-curl php7.2-curl python3-certbot-nginx

我可以毫无问题地重新安装imagick和certbot,但如果我尝试安装php7.2-curl,我会收到消息:

# apt install php7.2-curl -y
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have …
Run Code Online (Sandbox Code Playgroud)

php apt php-curl ubuntu-18.04

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

使用WinSSL,NTLM,HTTP2,SSH2和IPv6支持构建工作libcurl

在我们的PHP应用程序中,我们需要以某种方式构建的PHP curl-extension,它支持以下功能:

  • WinSSL(访问Windows证书存储区)
  • NTLM,基本和摘要式身份验证
  • HTTP/2支持
  • SSH2支持
  • IPv6支持

我试图以一种实现这个目的的方式构建curl:

  • 将其与WinSSL链接
  • 将它与nghttp2联系起来
  • 将它链接到libssh2
  • 启用IPv6

我是用命令行完成的

nmake /f Makefile.vc mode=dll VC=15 ENABLE_WINSSL=yes DEBUG=no MACHINE=x64 ENABLE_SSPI=no WITH_NGHTTP2=dll WITH_ZLIB=static WITH_SSH2=static WITH_DEVEL=C:\curl\deps-x64
Run Code Online (Sandbox Code Playgroud)

在卷发winbuild/子文件夹中.然后我根据结果编译了php curl扩展.

结果,在针对提供Basic,Digest,NTLM和Negotiate身份验证(Exchange Web服务)的Web服务执行HTTP请求时,我有以下不正确的行为:

  • 如果curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);使用,一切正常
  • 如果curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);使用,一切都很好
  • 如果curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM | CURLAUTH_BASIC);使用,则身份验证失败.

失败的请求包含一个太短的NTLM令牌(似乎在某些时候被切断).一些谷歌搜索指出,这可能是由于卷曲被编译为使用SSPI.但是,我无法禁用SSPI,因为WinSSL需要它.

有谁知道解决这个问题?获得满足所有上述要求的php-curl扩展?

php libcurl php-curl

25
推荐指数
1
解决办法
336
查看次数

TLS 1.2不在cURL中工作

我在卷曲使用TLS1.2的HTTPS网址时遇到问题,在我的curl操作中,我将登录数据发布到网站并将其保存在cookiefile中.我得到的错误信息是这个

 error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error
Run Code Online (Sandbox Code Playgroud)

我试过设置VERIFYPEER并且VERIFYHOST为0但是这似乎不起作用,有什么建议吗?

以下是我使用的版本:

  • OpenSSL版本为0.9.8b
  • CURL版本是7.24.0
  • PHP是5.3

这是代码:

$setuplogin = curl_init(); 
curl_setopt ($setuploginurl, CURLOPT_URL, $url); 
curl_setopt ($setuploginurl, CURLOPT_SSL_VERIFYPEER, 1); 
curl_setopt ($setuploginurl, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt ($setuploginurl, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt ($setuploginurl, CURLOPT_SSLVERSION, 'CURL_SSLVERSION_TLSv1_2');
curl_setopt ($setuploginurl, CURLOPT_POSTFIELDS, 'username=uname&password=pword&act=login&submit=Login');
curl_setopt ($setuploginurl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36"); 
curl_setopt (setuploginurl, CURLOPT_TIMEOUT, 60); 
curl_setopt ($setuploginurl, CURLOPT_COOKIESESSION, TRUE); 
curl_setopt ($setuploginurl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($setuploginurl,  CURLOPT_HEADER, 1);
curl_setopt ($setuploginurl,CURLOPT_ENCODING,"gzip");
curl_setopt ($setuploginurl, CURLOPT_POST, true);
curl_setopt …
Run Code Online (Sandbox Code Playgroud)

php ssl openssl php-curl

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

如何将Php CURL请求转换为命令行curl

如何将以下php curl请求翻译为curl可执行命令.

 $curlOpts = array(
                    CURLOPT_PORT           => "3000",
                    CURLOPT_URL            => 'www.example.com',
                    CURLOPT_RETURNTRANSFER => true,
                    CURLOPT_HTTPHEADER     => array("Cookie: connect.sid=aASD234SDFfds", "content-type:application/json"),
                    CURLOPT_POST           => true,
                    CURLOPT_POSTFIELDS     => {"email": "test.com",  
   "password": "123456"},
                );

curl_setopt_array($ch, $curlOpts);
 $output = curl_exec($ch);
Run Code Online (Sandbox Code Playgroud)

我想要的尊重的卷曲命令

curl -X GET --header 'Accept: application/json' 'http://www.example.com?sort=clicks&order=des'


curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ 
   "email": "test.com", \ 
   "password": "123456" \ 
 }' 'http://example.com/login'
Run Code Online (Sandbox Code Playgroud)

请帮我一样.

php curl php-curl

12
推荐指数
1
解决办法
9486
查看次数

PHP curl连接超时错误

我在PHP中使用curl调用API,有时它工作正常,有时我得到 Failed to connect to api-domain.com port 80: Connection timed out

这有点奇怪,有时它正在工作,有时它不是.要解决我打印的问题,curl_getinfo()当它不工作时,请在下面查看.

它显示连接时间= 0和总时间= 130秒,我不确定它是什么意思.如果任何人对此有充分了解,请查看以下日志并帮助我了解具体问题.

[url] => http://api-domain.com/?act=get_story_banners
[content_type] => text/html; charset=UTF-8
[http_code] => 200
[header_size] => 630
[req   uest_size] => 283
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 130.335916
[namelookup_time] => 0.000016
[connect_time] => 0
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 744
[speed_download] => 13814
[speed_upload] => 0
[download_content_length] => -1
[upload_content_length] => -1
[starttransfer_time] => 0
[redirect_time] => 0
[redirect_url] …
Run Code Online (Sandbox Code Playgroud)

php curl php-curl

11
推荐指数
2
解决办法
5630
查看次数

如何在 HTTP/1.1 中使用 PHP cURL

我的服务器 cURL 版本在进行远程调用时比客户端的版本新,客户端的服务器自动切换到 http/2,有什么办法可以强制使用 curl 和 http/1.1

如何将 cURL HTTP 版本设置为 1.1,我通过在代码中添加以下设置进行了测试,但添加后 curl 停止工作。各种帮助都是可观的。提前致谢。

 curl_setopt($ch, CURLOPT_HTTP_VERSION, '1.1');
 curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
Run Code Online (Sandbox Code Playgroud)

有什么办法可以在 HTTP 1.1 中使用 curl 吗?

我的服务器版本是

PHP 版本 7.2.16

卷曲信息 7.62.0

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

//curl_setopt($ch, CURLOPT_HTTP_VERSION, '1.1');
//curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $pass);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET …
Run Code Online (Sandbox Code Playgroud)

php curl server-sent-events php-curl

11
推荐指数
1
解决办法
4183
查看次数

使用AJAX和PHP对第三方API进行安全API调用

我想对第三方API进行GET,POST和PUT调用,并通过AJAX在客户端显示响应.API调用需要一个令牌,但我需要将该令牌保密/不在客户端JS代码中.

我已经看到了一些像这样的建议,中间的服务器端代码将由AJAX查询,并将处理实际的API调用.我可以直接使用AJAX的API,但我不确定如何使用两步过程来隐藏用户的令牌.我的谷歌搜索没有找到任何关于实现这一目标的最佳实践方法的指示.

在我的情况下,中间的服务器将运行PHP,因此我假设cURL/Guzzle是使用令牌进行API调用的直接选项.API响应将是JSON.

任何人都可以给我一个粗略的例子,说明如何使用jQuery.ajax(),PHP,第三方API实现这一目标?

或者,如果有任何质量资源详细介绍了这种方法,我会很感激.同样,如果这是一种可怕的使用方法,那么知道原因会很棒.

编辑
可能值得注意的是,我希望尽可能灵活地部署它; 它将用于具有唯一配置的多个站点,因此理想情况下,这将在不改变服务器或主机帐户配置的情况下实现.

javascript php ajax jquery php-curl

10
推荐指数
3
解决办法
6012
查看次数

卷曲选项相当于Net.Webclient的"useDefaultCredentials"

我尝试在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);
Run Code Online (Sandbox Code Playgroud)

它返回:

无法连接到www.google.fr端口443:连接被拒绝

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

在MS Powershell中,这有效:

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

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

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

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

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://www.google.fr");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 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 …
Run Code Online (Sandbox Code Playgroud)

curl webclient php-curl

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