gpt4 book ai didi

PHP OOP CURL 代理错误

转载 作者:搜寻专家 更新时间:2023-10-31 21:17:40 25 4
gpt4 key购买 nike

<?php
class Isis_Expl
{
const USERAGENT = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13';

public static $ch;

public static $proxyType;
public static $proxy;
public static $postFields;
public static $cookie;

public static function setProxy($proxy, $proxyType = '1')
{
self::$proxy = $proxy;
switch ($proxyType)
{
case '4':
self::$proxyType = 'CURLPROXY_SOCKS4';
break;
case '5':
self::$proxyType = 'CURLPROXY_SOCKS5';
break;
default:
break;
}
}

public static function init($url)
{
self::$ch = curl_init();
curl_setopt(self::$ch, CURLOPT_URL, $url);
curl_setopt(self::$ch, CURLOPT_REFERER, $url);
curl_setopt(self::$ch, CURLOPT_HEADER, 1);
curl_setopt(self::$ch, CURLOPT_USERAGENT, self::USERAGENT);
curl_setopt(self::$ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt(self::$ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt(self::$ch, CURLOPT_TIMEOUT, 15);
curl_setopt(self::$ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt(self::$ch, CURLOPT_SSL_VERIFYHOST, FALSE);
self::_getProxy();
self::_getPost();
self::_getCookie();

$content = curl_exec(self::$ch);

if (curl_errno(self::$ch))
{
echo curl_error(self::$ch);
return false;
}
else
{
return $content;
}
}

protected function _getProxy()
{
if (self::$proxyType) curl_setopt(self::$ch, CURLOPT_PROXYTYPE, self::$proxyType);
if (self::$proxy) curl_setopt(self::$ch, CURLOPT_PROXY, self::$proxy);
}

protected function _getPost()
{
if (self::$postFields)
{
curl_setopt(self::$ch, CURLOPT_POST, 1);
curl_setopt(self::$ch, CURLOPT_POSTFIELDS, self::$postFields);
}
}

protected function _getCookie()
{
if (self::$cookie) curl_setopt(self::$ch, CURLOPT_COOKIE, self::$cookie);
}
}

Isis_Expl::setProxy('XXX.XXX.XXX.XXX:XXXX');
echo Isis_Expl::init('http://google.com');

输出:接收失败:连接被重置

但是如果我评论“//Isis_Expl::setProxy('XXX.XXX.XXX.XXX:XXXX');”那个输出没问题..哪里出了问题?

最佳答案

首先,当实例更合适时,不要使用静态类。你在这里有状态,所以使用一个实例。其次,您可能想更好地命名您的方法。 _getProxy() 我认为会返回一些东西,不会影响应用程序的状态。

现在,针对您的确切问题:

  1. 它是 HTTP 代理吗?如果是这样,您是否应该将 CURLOPT_HTTPPROXYTUNNEL 设置为 true?

  2. 您在 setProxy 中声明 proxyType 默认为 1,但是您从未设置 self::$proxyType .而且您永远不会将 CURLOPT_PROXYTYPE 设置为 CURLPROXY_HTTP(您不需要,但我会明确说明)。

  3. 您从不为代理声明任何身份验证。是开放代理吗?

  4. 您确定代理确实在监听该 IP 和端口吗?那是一个非标准端口...尝试从服务器打开一个连接,看看会发生什么:

    $f  = fsockopen('XXX.XXX.XXX.XXX', 'XXXX');
    if (!$f) die('Server not accepting connections');
    fwrite($f, "q\r\n\r\n");
    var_dump(fread($f, 4048));
    fclose($f);

关于PHP OOP CURL 代理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5121875/

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