使用Curl Proxy发布数据不返回任何内容


Post data using Curl Proxy returns no content

当我使用curl发布数据时,没有代理工作正常,但当我使用代理时,我的输出为null

这里是我的表单test.php

<form name="result" id="result" action="testdb.php" method="post" target="frame">
<input name="htno" type="text" id="htno"/>
<input type="submit" value="submit"/>
</form>
<iframe name="frame" id="frame" sandbox="allow-same-origin allow-forms allow-scripts" width="700px" height="500px" frameborder="no"/>
testdb.php中的代码是
$id= $_POST["htno"];
$ch = curl_init();
$curlConfig = array(
CURLOPT_PROXYTYPE       => 'HTTP',
CURLOPT_PROXY           => '218.108.170.163:82',
CURLOPT_HTTPPROXYTUNNEL => '1',
CURLOPT_FOLLOWLOCATION  => '1',
CURLOPT_MAXREDIRS      => '2',
CURLOPT_RETURNTRANSFER => '1',
CURLOPT_CONNECTTIMEOUT => '10',
CURLOPT_USERAGENT      => 'Mozilla/5.0 (X11; U; Linux i686; en-US) 
        AppleWebKit/532.4 (KHTML, like Gecko) 
        Chrome/4.0.233.0 Safari/532.4',
CURLOPT_HTTPHEADER     => array('Referer: engineershub.in/sparcpanel1/b-tech1/btech11.php'),
CURLOPT_URL            => 'http://engineershub.in/sparcpanel1/b-tech1/btech11db.php',
CURLOPT_POST           => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS     => array(
    'id' => "$id"
),
);
curl_setopt_array($ch, $curlConfig);
$result = curl_exec($ch);
echo $result;
curl_close($ch);

上面的代码返回null结果,如果我删除这部分

CURLOPT_PROXYTYPE       => 'HTTP',
CURLOPT_PROXY           => '218.108.170.163:82',
CURLOPT_HTTPPROXYTUNNEL => '1',
CURLOPT_FOLLOWLOCATION  => '1',
CURLOPT_MAXREDIRS      => '2',
CURLOPT_RETURNTRANSFER => '1',
CURLOPT_CONNECTTIMEOUT => '10',
CURLOPT_USERAGENT      => 'Mozilla/5.0 (X11; U; Linux i686; en-US) 
        AppleWebKit/532.4 (KHTML, like Gecko) 
        Chrome/4.0.233.0 Safari/532.4',
从上面的代码中,我得到了输出

我想用代理输出,请帮助我

我在这里假设您需要提供一个用户名/密码来通过代理服务器(如果您在windows上,这可能是您的windows登录凭据,当然取决于您的网络设置)。我们有必要试着传递这些信息,看看是否有帮助。

尝试填写$username &$password与您的详细信息,并将其放在您执行curl_exec.

$username = 'your_username';
$password = 'your_password';
$headers = array(
    'Proxy-Authorization: BASIC ' . base64_encode("{$username}:{$password}")
); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

如果这不起作用,那么如果你能让我们知道你得到的具体错误,这将有助于使用以下命令(在你运行了curl_exec之后)。

if ($result === false)
{
    print "Error number: " . curl_errno() . "<br>'n";
    print "Error message: " . curl_error() . "<br>'n";
}

如果您必须提供usernamepassword,请检查代理服务器

还要检查您是否在NTLM代理之后,并相应地设置该参数。我认为你应该认真考虑一下。我不知道如何在PHP中设置此参数,但在BaSH中,它是--proxy-ntlm。如果您绝对不会使用shell,并且不知道如何在PHP中设置NTLM选项,请考虑下载CNTLM。它是一个位于应用程序和代理之间的服务器。

要了解CURL操作是如何进行的,请设置详细参数CURLOPT_VERBOSE

正如他们所说,您应该使用CURLOPT_HTTPAUTH选项与所需的认证方法(CURLAUTH_BASIC, CURLAUTH_DIGEST, CURLAUTH_GSSNEGOTIATE, CURLAUTH_NTLM, CURLAUTH_ANY, y CURLAUTH_ANYSAFE。)更多信息在这里:http://docs.php.net/manual/es/function.curl-setopt.php.

我认为你也可以尝试从控制台常规的curl调用,并检查它是否有效。