Сайтты curl_init() ичинде калтырып, ортомчуну ошол туткага коюңуз. PHP-ге cURL кеңейтүүсү керек; терминалда иштеген curl программасы кеңейтүү бар экенин далилдебейт.

<?php
$ch = curl_init('https://example.com/');
curl_setopt_array($ch, [
    CURLOPT_PROXY => 'http://203.0.113.10:8080',
    CURLOPT_PROXYTYPE => CURLPROXY_HTTP,
    CURLOPT_NOPROXY => '',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 5,
    CURLOPT_TIMEOUT => 15,
]);

$body = curl_exec($ch);
if ($body === false) {
    throw new RuntimeException(curl_error($ch), curl_errno($ch));
}

echo curl_getinfo($ch, CURLINFO_RESPONSE_CODE), PHP_EOL;
echo $body;

Документтеги IP менен портту өз HTTP проксиңиз же HTTP проксилердин тизмесиндеги жазуу менен алмаштырыңыз. CURLOPT_NOPROXY бул сыноо үчүн айланып өтүү эрежелерин тазалайт; CURLOPT_RETURNTRANSFER денени браузерге жибербей кайтарат. Туташуу чеги орнотууну, жалпы убакыт чеги cURL аракетин чектейт.

SOCKS5 акыркы чекити үчүн HTTP прокси параметрлерин curl_exec() алдында алмаштырыңыз:

curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);

CURLPROXY_SOCKS5_HOSTNAME багыттын DNS-ин SOCKS серверине тапшырат. Көрсөтүлгөн протоколду колдонуңуз; жалгыз 1080 порту аны аныктабайт. Эч бир прокси тандоосу сайттын сертификатын текшерүүнү өчүрүүнү талап кылбайт.

$body === false шартын катуу текшериңиз. Бош дене ийгиликтүү өткөрүү болушу мүмкүн, ал эми туннель катасы сайттан эч жооп келе электе болушу мүмкүн. Тескерисинче, бош эмес дене 403, 404 же 429 менен келиши мүмкүн. Аяктаган суроо ишиңизди аткарарын чечүү үчүн CURLINFO_RESPONSE_CODE маанисин cURL ката жыйынтыгы менен чогуу окуңуз.

Тектеш макалалар