Как я могу сделать так, чтобы php мог загружать прокси из текстового файла, а затем «вращать» их при использовании curlopt_proxy - PullRequest
0 голосов
/ 01 февраля 2020

Это кое-что из того, что я пробовал .. Я все еще получаю ошибку Вызов функции-члена getProxy () и Неопределенная переменная: rotate , после того как я определил функцию getproxy, я думаю, что я слепой, потому что есть кое-что, чего я не вижу, пожалуйста, если у вас есть какой-то совет, поделитесь им :). PS: Что я имею в виду под вращением, так это путем рандомизации каждого прокси и использования его при использовании curl «post», извините, если это плохой пост.


Class RotateProxy{
    private $proxy = '';
    private $fp = '';
    private $list = array();
    private $counter; //number of times proxy used. Default is 1
    private $current; //number of times proxy HAS been used.

    public function __constructor($path,$counter=1){
        $this->list = trim(file($path));
        $this->$counter = $counter;
    }

    public function getProxy(){
        if($this->current > $this->counter){
            array_shift($this->list);

            $this->current = 1;

            $this->proxy = $this->list[0];

            return $this->proxy;
        }else{
            $this->current++;
            return $this->proxy;
        }
    }
}

$proxylist = __DIR__ . 'proxies.txt'; // just an example.
$proxy = $rotate->getProxy();
$counter = 1; // proxy will be used 5 times before moving to the next proxy.
$rotate = new RotateProxy($proxylist,$counter);
$session = mt_rand();
$curl = curl_init('https://api.ipify.org/');
curl_setopt($curl, CURLOPT_USERAGENT, $user_agent);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_PROXY, $proxy);
$result = curl_exec($curl);
curl_close($curl);



if ($result)
    echo $result;
?>```

1 Ответ

0 голосов
/ 01 февраля 2020

Вы должны создать экземпляр класса RotateProxy, прежде чем вызывать методы для этого экземпляра. то есть так:

$rotate = new RotateProxy($proxylist,$counter);
$proxy = $rotate->getProxy();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...