使用PHP卷起网页无法正常工作

问题描述:

我正在尝试拨打花旗银行的开放式API(https://developer.citi.com/),这需要我刮擦屏幕以允许用户使用其用户名和密码登录。使用PHP卷起网页无法正常工作

如果我只是把这个URL与参数放在浏览器中,

https://sandbox.apihub.citi.com/gcb/api/authCode/oauth2/authorize?response_type=code&client_id=<my_client_id>&scope=pay_with_points&countryCode=SG&businessCode=GCB&locale=en_SG&state=12093&redirect_uri=<my_callback> 

然而,当我试图从我的,卷曲的PHP代码进行相同的调用,它返回的503

<?php 

$header = array(); 
$header[] = 'Upgrade-Insecure-Requests: 1'; 
$header[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8'; 
$header[] = 'Accept-Encoding: gzip, deflate, br'; 
$header[] = 'Accept-Language: en-US,en;q=0.8,ja;q=0.6,zh-CN;q=0.4,zh;q=0.2,zh-TW;q=0.2,th;q=0.2'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://sandbox.apihub.citi.com/gcb/api/authCode/oauth2/authorize?response_type=code&client_id=<my_client_id>=pay_with_points&countryCode=SG&businessCode=GCB&locale=en_SG&state=12093&redirect_uri=<my_callback_url>'); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_ENCODING, ''); 
curl_setopt($ch, CURLOPT_TIMEOUT, 20); 
$result = curl_exec($ch); 
curl_close ($ch); 
echo $result; 
?> 

我试图改变我的请求头,使其状态码就像我在浏览器中输入URL时的样子。

我一定错过了我需要在curl中配置的东西。

会有人有一些想法吗?谢谢!

+0

whats with'redirect_uri = '? – madalinivascu

+0

和''? – madalinivascu

+1

这是我的回拨网址。授权API将回调我在这里说的,例如http://www.myurl.com/bank/hello.php。 –

该问题可能是由于https。有几个选项可用。

您也可以下载 https://curl.haxx.se/ca/cacert.pem文件并保存它,然后添加此选项

curl_setopt($ch, CURLOPT_CAINFO, "/path/to/cacert.pem"); 

2.您可以通过该网站下载从浏览器证书和做同样的如上。如果他们更换证书,您可能会遇到问题,需要与他们确认。

3.这是不推荐的,但可以暂时用于调试目的找出,如果这是实际问题。它引入了MIMT攻击。

//Only use for debugging purposes. 
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); 
+1

谢谢卡迈勒。我意识到,在浏览器中查看时,页面会重定向并丢弃cookie,然后重定向到下一页。如果我粘贴cookie并卷曲它,它就会起作用。但该页面只生成HTML部分。使用JavaScript编写的部分不会出现。我想可能卷曲不是这个的正确解决方案。我应该刚刚完成页面重定向。缺点是用户看到我的client_id。我需要考虑一下,如果我的client_id不是秘密,那真的很重要。 –