Ротация прокси только с живыми прокси - PullRequest
0 голосов
/ 06 ноября 2018

Как я могу заставить свой код PHP перебирать массив и удалять прокси, которые не работают?

<?php

$proxies = array(
"187.120.243.27:42026",
"138.185.56.166:32070",
"200.195.186.205:30698",
"170.239.46.2:41823",
"189.85.84.186:80",
);

//foreach value of array do the instructions below

$ch = curl_init();
curl_setopt($ch, CURLOPT_PROXY, $proxies);
//this value should be one value at time of the array 'proxies'
curl_setopt($ch,CURLOPT_URL,'http://icanhazip.com/');
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HTTPHEADER,array(
    "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0",
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language: en-US,en;q=0.5",
    "DNT: 1",
    "Upgrade-Insecure-Requests: 1",
    "Connection: close"
));

$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    if ($httpcode > 1) {
        echo "$data";
//live proxy stays on the list

    }

    else {
        //unset current array(remove not working proxy)
    }
?>

Я уже сделал базовый код, но я новичок в PHP, кто-то может мне помочь? Идея состоит в том, чтобы проверить все прокси в списке и удалить прокси, которые не работают.

1 Ответ

0 голосов
/ 06 ноября 2018

Мы можем получить доступ к паре ключ-значение в цикле foreach. Мы используем синтаксис $key => $value для доступа к ним обоим по отдельности. Теперь, когда прокси не работает, нам просто нужно использовать функцию unset(), используя $key, чтобы удалить это значение прокси из массива $proxies:

// Initialize live_proxies array
$live_proxies = $proxies;

// In the foreach loop, we access key and its value
// value is $proxy
foreach ($live_proxies as $key => $proxy) {

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_PROXY, $proxy);
    //this value should be one value at time of the array 'proxies'

    curl_setopt($ch,CURLOPT_URL,'http://icanhazip.com/');
    curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_HTTPHEADER,array(
        "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0",
        "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language: en-US,en;q=0.5",
        "DNT: 1",
        "Upgrade-Insecure-Requests: 1",
        "Connection: close"
    ));

    $data = curl_exec($ch);
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    if ($httpcode > 1) {
        echo "$data";
    }
    else {
        // use unset function to remove current proxy value
        // from the live_proxies array using the $key
        unset($live_proxies[$key]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...