Proxy Authentication Required with cURL

前端 未结 4 1561
梦如初夏
梦如初夏 2020-12-14 03:33

I would like to use a cURL function, but I\'m behind a proxy, so I get an HTTP/1.1 407 Proxy Authentication Required error...

This is the php code I use

相关标签:
4条回答
  • 2020-12-14 04:06

    This is what I'm mostly using :

    function curlFile($url,$proxy_ip,$proxy_port,$loginpassw)
    {
        //$loginpassw = 'username:password';
        //$proxy_ip = '192.168.1.1';
        //$proxy_port = '12345';
        //$url = 'http://www.domain.com';
    
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_PROXYPORT, $proxy_port);
        curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP');
        curl_setopt($ch, CURLOPT_PROXY, $proxy_ip);
        curl_setopt($ch, CURLOPT_PROXYUSERPWD, $loginpassw);
        $data = curl_exec($ch);
        curl_close($ch);
    
        return $data;
    }
    
    0 讨论(0)
  • 2020-12-14 04:06

    Assuming the $proxy_user:$proxy_pass are the correct values, if you are behind an office firewall the authentication credentials to be used would be that of a network administrator and not your own...I've encountered something very similar in my work environment and that was the case for me as my normal credentials didn't have the necessary privileges. The best way to ensure that this is the case however would be to ensure the code works in an open network with your proxy settings commented. Hope this helps!

    0 讨论(0)
  • 2020-12-14 04:11

    This is what I use and it works perfectly:

    $proxy = "1.1.1.1:12121";
    $useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
    $url = "http://www.google.pt/search?q=anonymous";
    $credentials = "user:pass"
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,15);
    curl_setopt($ch, CURLOPT_HTTP_VERSION,'CURL_HTTP_VERSION_1_1' );
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
    curl_setopt($ch, CURLOPT_PROXY, $proxy);
    curl_setopt($ch, CURLOPT_PROXYUSERPWD,$credentials);
    curl_setopt($ch, CURLOPT_USERAGENT,$useragent);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
    $result=curl_exec ($ch);
    curl_close ($ch);
    
    0 讨论(0)
  • 2020-12-14 04:22

    Try to implement this in your function

       function send_string($data) {
    //       pr($data);exit;
    
         $equi_input="Your values";
    //  echo $equi_input; exit;
            $agent = ""//Agent Setting for Netscape  
            $url = ""; // URL to POST FORM. (Action of Form)
            //xml format
             $efx_request=strtoupper($equi_input);
          //echo  $efx_request;exit;
            $post_fields = "site_id=""&service_name=""&efx_request=$efx_request";
            $credentials = ;
            $headers = array("HTTP/1.1",
                "Content-Type: application/x-www-form-urlencoded",
                "Authorization: Basic " . $credentials
            );
            $fh = fopen('/tmp/test.txt', 'w') or die("can't open file"); //File to write the header information of the curl request.
            $ch = curl_init();    // Initialize a CURL session.
            curl_setopt($ch, CURLOPT_USERAGENT, $agent);
            curl_setopt($ch, CURLOPT_URL, $url);  // Pass URL as parameter.
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($ch, CURLOPT_STDERR, $fh);
            curl_setopt($ch, CURLOPT_POST, 1); // use this option to Post a form  
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); // Pass form Fields.  
            curl_setopt($ch, CURLOPT_VERBOSE, '1');
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '1');
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $result = curl_exec($ch);  // grab URL and pass it to the variable.
            curl_close($ch);  // close curl resource, and free system resources.  
            fclose($fh);
    
    
       //echo '<pre>';print_r($array);echo '</pre>';exit;
            if (!empty($result)) {
                return $result;
            } else {
                echo "Curl Error" . curl_error($ch);
            }
        }
    

    check request send 200ok ...

    And check your secure certificate if you are using....

    Thanks.

    0 讨论(0)
提交回复
热议问题