Как в cURL сделать подключение через прокси?
Новая тема Написать ответ
# Вс Ноя 18, 2012 7:20 pmYabuti Зарег.: 28.11.2008 ; Сообщ.: 16263Ответить с цитатой
Всем привет!
Сорри, что отвлекаю от работы, просто сам не могу понять, мозг кипит.
Есть скрипт "онлайнера" (авторизуется акком, чтобы на сайте был статус онлайн). Стоит задача допилить авторизацию через прокси.

Сам скрипт (100% рабочий, может кому пригодится и без прокси, создал из готовых частей кода других скриптов):
Код:
<?php

// Онлайнер аккаунтов Spaces.ru

set_time_limit (0);
ini_set('max_input_time', '0');
$error_level = error_reporting(0);
date_default_timezone_set('Etc/GMT+6');

require 'curl.php';

$curl = new Curl();

// === Авторизуемся ===
$curl
    ->url('http://spaces.ru/registration/?r=reg/loginform')
    ->postarray(array(
      'name' => '77055506735',
      'password' => 'armada2012',
      'sid' => "",
      'CK' => "",
      'link_id' => 0
      ))
    ->go('post');

// === Устанавливаем куки ===
foreach($curl->info['cookies'] as $key => $val) {
    $curl->cookies .= "$key=$val";
   $page = "http://spaces.ru/guestbook/";
   // сохраняем результат поиска в массив
   echo $curl->url($page)->go()->res;                     // Самая главная строка
}

$curl = "";
$page = "";
?>



Класс для работы с CURL: http://yadi.sk/d/NH2gelA60nX9t

Пытаюсь делать через вот эту функцию:
Код:
function get($url, $proxy)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
    curl_setopt($ch, CURLOPT_PROXY, "$proxy");
    $ss=curl_exec($ch);
    curl_close($ch);
    return $ss;
}
 
$prox = '77.39.1.0:3128';        // Еще рабочий прокси: 178.236.137.238:3128
$content = get($curl->url($page)->go()->res, $prox);
echo $content;


, выдает ошибку, руки у меня кривые, еще не научился программить в php bums

Пожалуйста, кто соображает в curl, подскажите, как можно авторизоваться через прокси.
Проверку прокси на "живость" я допишу сам, через file_get_contests, это несложно, а с курлом, етить его, мучаюсь.

Заранее огромное спасибо! Drinks or Beer
# Вс Ноя 18, 2012 7:46 pmexolon Зарег.: 22.11.2007 ; Сообщ.: 2397Ответить с цитатой
Ничего не понимаю.
Зачем "Самая главная строка" в цикле, где происходят манипуляции с куками.
Во втором случае тоже не понятно. Функция get принимает первым параметром url, а ты отправляешь результат работы curl, т.е. текст страницы. Да и при вызове метода go не указан метод get или post.
# Вс Ноя 18, 2012 9:42 pmJM Зарег.: 25.08.2006 ; Сообщ.: 1382Ответить с цитатой
Них не понял че ты хочешь сделать то?
По второму тупо
$prox = '77.39.1.0:3128'; // Еще рабочий прокси: 178.236.137.238:3128
$url='google.com';
$content = get($url, $prox);
# Пн Ноя 19, 2012 3:57 amYabuti Зарег.: 28.11.2008 ; Сообщ.: 16263Ответить с цитатой
exolon, Smile
Из кусков его собрал, он работает и норм :thup:

JM, нужно, чтобы при авторизации курлом с куками: $curl->url($page)->go()->res - это подключение шло через прокси.
То есть что-то вроде:

$proxy = '77.39.1.0:3128';
echo connect($curl->url($page)->go()->res, $proxy);

То есть, все запросы курла пускать через прокси.
Может в самом курле при инициализации нужно указать прокси?
Спасибо! Drinks or Beer
# Пн Ноя 19, 2012 4:50 amYabuti Зарег.: 28.11.2008 ; Сообщ.: 16263Ответить с цитатой
Сделал через CURLOPT_PROXY, ура!
Clapping Drinks or Beer
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ
 
Любое использование материалов, размещенных на ArmadaBoard.com, без разрешения владельцев ArmadaBoard.com запрещено.