gpt4 book ai didi

php - 在 PHP 上使用 SSL curl

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:52 24 4
gpt4 key购买 nike

我正在尝试将数据发送到使用 curl 并 try catch 数据的外部服务器。问题是响应数据是加密的,我认为问题出在 curl 和 SSL 上。我尝试使用 fiddler 进行捕获,当我解密数据时效果很好。我正在为 curl 使用一个类。代码如下:

class curl {
var $ch, $agent, $error, $info, $cookiefile, $savecookie;
function curl() {
$this->agent = $this->get_agent(rand(0,44));
$this->ch = curl_init();
curl_setopt ($this->ch, CURLOPT_USERAGENT, $this->agent);
curl_setopt ($this->ch, CURLOPT_HEADER, 1);
curl_setopt ($this->ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($this->ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($this->ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt ($this->ch, CURLOPT_FOLLOWLOCATION,true);
curl_setopt ($this->ch, CURLOPT_TIMEOUT, 30);
curl_setopt ($this->ch, CURLOPT_CONNECTTIMEOUT,30);
}
function timeout($time){
curl_setopt ($this->ch, CURLOPT_TIMEOUT, $time);
curl_setopt ($this->ch, CURLOPT_CONNECTTIMEOUT,$time);
}
function ssl($veryfyPeer, $verifyHost){
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, $veryfyPeer);
curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, $verifyHost);
}
function header($header) {
curl_setopt ($this->ch, CURLOPT_HTTPHEADER, $header);
}
function login($user, $pass) {
curl_setopt ($this->ch, CURLOPT_USERPWD, "$user:$pass");
}
function cookies($cookie_file_path) {
$this->cookiefile = $cookie_file_path;;
$fp = fopen($this->cookiefile,'wb');fclose($fp);
curl_setopt ($this->ch, CURLOPT_COOKIEJAR, $this->cookiefile);
curl_setopt ($this->ch, CURLOPT_COOKIEFILE, $this->cookiefile);
}
function ref($ref) {
curl_setopt ($this->ch, CURLOPT_REFERER,$ref);
}
function socks($sock) {
curl_setopt ($this->ch, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt ($this->ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
curl_setopt ($this->ch, CURLOPT_PROXY, $sock);
}
function proxy($sock) {
curl_setopt ($this->ch, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt ($this->ch, CURLOPT_PROXY, $sock);
}
function post($url, $data , $hasHeader=true, $hasBody=true) {
curl_setopt($this->ch, CURLOPT_HEADER, $hasHeader ? 1 : 0);
curl_setopt($this->ch, CURLOPT_NOBODY, $hasBody ? 0 : 1);
curl_setopt($this->ch, CURLOPT_POST, 1);
curl_setopt($this->ch, CURLOPT_POSTFIELDS, $data);
return $this->getPage($url);
}
function data($url, $data, $hasHeader=true, $hasBody=true) {
curl_setopt ($this->ch, CURLOPT_POST, 1);
curl_setopt ($this->ch, CURLOPT_POSTFIELDS, http_build_query($data));
return $this->getPage($url, $hasHeader, $hasBody);
}
function get($url, $hasHeader=true, $hasBody=true) {
curl_setopt ($this->ch, CURLOPT_POST, 0);
return $this->getPage($url, $hasHeader, $hasBody);
}
function getPage($url, $hasHeader=true, $hasBody=true) {
curl_setopt($this->ch, CURLOPT_HEADER, $hasHeader ? 1 : 0);
curl_setopt($this->ch, CURLOPT_NOBODY, $hasBody ? 0 : 1);
curl_setopt ($this->ch, CURLOPT_URL, $url);
$data = curl_exec ($this->ch);
$this->error = curl_error ($this->ch);
$this->info = curl_getinfo ($this->ch);
return $data;
}
function close() {
unlink($this->cookiefile);
curl_close ($this->ch);
}
function get_agent($z){
switch ($z){
case 0: $agent= "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0"; break;
case 1: $agent= "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1"; break;
case 2: $agent= "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"; break;
case 3: $agent= "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"; break;
case 4: $agent= "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)"; break;
case 5: $agent= "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"; break;
case 6: $agent= "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9a8) Gecko/2007100619 GranParadiso/3.0a8"; break;
case 7: $agent= "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b3) Gecko/20090305 Firefox/3.1b3"; break;
case 8: $agent= "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4325)"; break;
case 9: $agent= "Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 6.0)"; break;
case 10: $agent= "Mozilla/4.0 (compatible; MSIE 5.5b1; Mac_PowerPC)"; break;
case 11: $agent= "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"; break;
case 12: $agent= "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; MS-RTC LM 8)"; break;
case 13: $agent= "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)"; break;
case 14: $agent= "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1)"; break;
case 15: $agent= "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)"; break;
case 16: $agent= "Mozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.5; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; break;
case 17: $agent= "Mozilla/5.0 (X11; U; Linux; it-IT) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.4 (Change: 413 12f13f8)"; break;
case 18: $agent= "Mozilla/5.0 (X11; U; Linux; en-GB) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 239 52c6958)"; break;
case 19: $agent= "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.2 (Change: 189 35c14e0)"; break;
case 20: $agent= "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Avant Browser; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)"; break;
case 21: $agent= "Mozilla/5.0 (Windows; U; WinNT; en; rv:1.0.2) Gecko/20030311 Beonex/0.8.2-stable"; break;
case 22: $agent= "Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.8.1b1) Gecko/20060601 BonEcho/2.0b1 (Ubuntu-edgy)"; break;
case 23: $agent= "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.4pre) Gecko/20070521 Camino/1.6a1pre"; break;
case 24: $agent= "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/419 (KHTML, like Gecko, Safari/419.3) Cheshire/1.0.ALPHA"; break;
case 25: $agent= "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.0.1) Gecko/20021216 Chimera/0.6"; break;
case 26: $agent= "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.164.0 Safari/530.1"; break;
case 27: $agent= "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Crazy Browser 3.0.0 Beta2)"; break;
case 28: $agent= "Mozilla/5.0 (X11; U; Linux i686; en; rv:1.8.1.12) Gecko/20080208 (Debian-1.8.1.12-2) Epiphany/2.20"; break;
case 29: $agent= "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b2pre) Gecko/20081015 Fennec/1.0a1"; break;
case 30: $agent= "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6b) Gecko/20031212 Firebird/0.7+"; break;
case 31: $agent= "Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.04 (jaunty) Firefox/3.5"; break;
case 32: $agent= "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3"; break;
case 33: $agent= "Mozilla/5.0 (Windows; U; Windows NT 6.0; it; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9"; break;
case 34: $agent= "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5"; break;
case 35: $agent= "Mozilla/4.76 [en] (X11; U; Linux 2.4.9-34 i686)"; break;
case 36: $agent= "Mozilla/4.75 [fr] (WinNT; U)"; break;
case 37: $agent= "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.52 [en]"; break;
case 38: $agent= "Mozilla/4.0 (compatible; MSIE 6.0; ; Linux i686) Opera 7.50 [en]"; break;
case 39: $agent= "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081212 Mozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/526.9 (KHTML, like Gecko) Version/4.0dp1 Safari/526.8"; break;
case 40: $agent= "Mozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.8.0.2) Gecko/20060309 SeaMonkey/1.0"; break;
case 41: $agent= "Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.7.6) Gecko/20050405 Epiphany/1.6.1 (Ubuntu) (Ubuntu package 1.0.2)"; break;
case 42: $agent= "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.5) Gecko/20060731 Firefox/1.5.0.5 Flock/0.7.4.1"; break;
case 43: $agent= "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19 "; break;
case 44: $agent= "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5 "; break;
}
return $agent;
}
}

有人可以帮助我毫无问题地使用 curl 和 SSL 吗?

我正在尝试的主机的响应是这样的:

HTTP response

Fiddler 解码了,有什么问题吗?

最佳答案

尝试使用 gzip 编码:

curl_setopt($ch,CURLOPT_ENCODING, 'gzip');

如果还是不行,试试:

curl_setopt($ch,CURLOPT_ENCODING, '');

关于php - 在 PHP 上使用 SSL curl ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48876602/

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