Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> 400 ошибка при отправке useragent через переменную, [cURL]
alexbel2404  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1084
Пользователь №: 28824
На форуме: 5 лет, 10 месяцев, 8 дней
Карма: 55




Есть метод
public function downloadPage($url, $use_proxy = FALSE) {
file_put_contents($this->cookie_file, '');
$ch = curl_init();
if ($use_proxy === TRUE)
curl_setopt($ch, CURLOPT_PROXY, $this->getRandomItemFromArray($this->proxies));
//curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, 'https://www.google.ru/search?q=' . urlencode($url));
curl_setopt($ch, CURLOPT_USERAGENT, $this->getRandomItemFromArray($this->userAgent));
curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie_file);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_URL, $url);
for ($i = 0; $i < $this->repeatOnError; ++$i) {
if ($content = curl_exec($ch)) {
if (stripos($content, '</html>')) {
return $content;
}
}
}

return FALSE;
}

Ошибок найти не могу, но если передавать юзерагент таким способом, как описано в методе или сначала записать результат
$ua = $this->getRandomItemFromArray($this->userAgent)
в переменную, а потом ее подставить в ua, как описано в методе, то сервер, к которому обращаюсь, возвращает, 400 ошибку.
Если же скопировать с файла с юзерагентами строку, и вставить в вручную
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9');

то все работает.
У кого какие мысли?)

P.S. Метод getRandomItemFromArray работает ) там пару строк кода.



Спустя 2 минуты, 27 секунд (3.05.2012 - 20:23) Nikitian написал(а):
Всё-таки хочется вдть это магический метод и свойство $userAgent

Спустя 5 минут, 55 секунд (3.05.2012 - 20:29) alexbel2404 написал(а):
public function getRandomItemFromArray(Array $array) {
$index = array_rand($array);
return $array[$index];
}

$this->userAgent = file(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'useragents.txt');

Проверял не раз их работоспособность)

Спустя 16 минут, 36 секунд (3.05.2012 - 20:46) Nikitian написал(а):
К функии file() добавьте второй параметр
Цитата
FILE_IGNORE_NEW_LINES

Не добавлять новую строку к концу каждого элемента массива

ибо
Цитата
Замечание:

Каждая строка в полученном массиве будет завершаться символами конца строки (если вы не указали флаг FILE_IGNORE_NEW_LINES), поэтому, если вам будет нужно избавиться от этих символов, вы можете использовать функцию rtrim().

Спустя 3 минуты, 12 секунд (3.05.2012 - 20:49) alexbel2404 написал(а):
спасибо, видимо не доспал сегодня) все работает)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Закрытая темаСоздание новой темыСоздание опроса