PHP + CURL + PROXY + SSL

Discussion in 'PHP' started by ArtCard, 25 Apr 2013.

  1. ArtCard

    ArtCard New Member

    Joined:
    20 Sep 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Собственно проблема в следующем :
    Не получается открыть сайт по https через курл используя прокси.

    ПРи попытке открыть вываливается ошибка
    Unknown SSL protocol error in connection to some_server:ПОРТ_ПРОКСИ

    Прокси указывал и через двоеточие и отдельно
    Code:
    curl_setopt($ch, CURLOPT_PROXY, $pr[0]);
    curl_setopt($ch, CURLOPT_PROXYPORT, $pr[1]);
    Иногда выпадает Recieved HTTP Code 0 from proxy after CONNECT

    Собственно перегуглил все на свете. рещение не нашел .
    Спасибо
     
  2. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Не уверен но это скорее всего означает что HTTP прокси не поддерживает метод CONNECT который необходим для выполнения через него не HTTP запросов.
     
  3. ArtCard

    ArtCard New Member

    Joined:
    20 Sep 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Code:
    function post_content ($url,$postdata,$proxy) {
      $uagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
      if($proxy != null)
    {
    $pr = explode(":",$proxy);
    }
      $ch = curl_init( $url );
    
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_HEADER, 1);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
      if($proxy != null)
    {
      curl_setopt($ch, CURLOPT_PROXY, $pr[0].":".$pr[1]);
    }
      curl_setopt($ch, CURLOPT_ENCODING, "");
      curl_setopt($ch, CURLOPT_USERAGENT, $uagent);  // useragent
      curl_setopt($ch, CURLOPT_TIMEOUT, 30);
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
      curl_setopt($ch, CURLOPT_COOKIEJAR, "cook.txt");
      curl_setopt($ch, CURLOPT_COOKIEFILE,"cook.txt");
     	curl_setopt($ch, CURLOPT_SSLVERSION, 3);
    
    
      $content = curl_exec( $ch );
      $err     = curl_errno( $ch );
      $errmsg  = curl_error( $ch );
      $header  = curl_getinfo( $ch );
      curl_close( $ch );
    
      $header['errno']   = $err;
      $header['errmsg']  = $errmsg;
      $header['content'] = $content;
      return $header;
     
    }

    Решил добавив
    curl_setopt($ch, CURLOPT_SSLVERSION, 3);