Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: аналог на perl  (Прочитано 9852 раз)
0 Пользователей и 1 Гость смотрят эту тему.
vika
Постоялец

ru
Offline Offline
Пол: Женский

« : 19-07-2012 01:03 » 

Код:
<?php
/**
 * Random user agent creator
 * @since Sep 4, 2011
 * @version 1.0
 * @link http://360percents.com/
 * @author Luka <pusic93@gmail.com>
 */

/**
 * Possible processors on Linux
 */
$linux_proc = array(
    &
#39;i686&#39;,
    
&#39;x86_64&#39;
);
/**
 * Mac processors (i also added U;)
 */
$mac_proc = array(
    &
#39;Intel&#39;,
    
&#39;PPC&#39;,
    
&#39;U; Intel&#39;,
    
&#39;U; PPC&#39;
);

/**
 * Add as many languages as you like.
 */
$lang = array(
    &
#39;en-US&#39;,
    
&#39;sl-SI&#39;
);

function 
firefox() {
    global 
$linux_proc$mac_proc$lang;

    
$ver = array(
&#39;Gecko/&#39; . date(&#39;Ymd&#39;, rand(strtotime(&#39;2011-1-1&#39;), mktime())) . &#39; Firefox/&#39; . rand(5, 7) . &#39;.0&#39;,
&#39;Gecko/&#39; . date(&#39;Ymd&#39;, rand(strtotime(&#39;2011-1-1&#39;), mktime())) . &#39; Firefox/&#39; . rand(5, 7) . &#39;.0.1&#39;,
&#39;Gecko/&#39; . date(&#39;Ymd&#39;, rand(strtotime(&#39;2010-1-1&#39;), mktime())) . &#39; Firefox/3.6.&#39; . rand(1, 20),
&#39;Gecko/&#39; . date(&#39;Ymd&#39;, rand(strtotime(&#39;2010-1-1&#39;), mktime())) . &#39; Firefox/3.8&#39;
    
);

    
$platforms = array(
&#39;(Windows NT &#39; . rand(5, 6) . &#39;.&#39; . rand(0, 1) . &#39;; &#39; . $lang[array_rand($lang, 1)] . &#39;; rv:1.9.&#39; . rand(0, 2) . &#39;.20) &#39; . $ver[array_rand($ver, 1)],
&#39;(X11; Linux &#39; . $linux_proc[array_rand($linux_proc, 1)] . &#39;; rv:&#39; . rand(5, 7) . &#39;.0) &#39; . $ver[array_rand($ver, 1)],
&#39;(Macintosh; &#39; . $mac_proc[array_rand($mac_proc, 1)] . &#39; Mac OS X 10_&#39; . rand(5, 7) . &#39;_&#39; . rand(0, 9) . &#39; rv:&#39; . rand(2, 6) . &#39;.0) &#39; . $ver[array_rand($ver, 1)]
    
);

    return 
$platforms[array_rand($platforms1)];
}

function 
safari() {
    global 
$linux_proc$mac_proc$lang;

    
$saf rand(531535) . &#39;.&#39; . rand(1, 50) . &#39;.&#39; . rand(1, 7);
    
if (rand(01) == 0) {
$ver rand(45) . &#39;.&#39; . rand(0, 1);
    
} else {
$ver rand(45) . &#39;.0.&#39; . rand(1, 5);
    
}

    
$platforms = array(
&#39;(Windows; U; Windows NT &#39; . rand(5, 6) . &#39;.&#39; . rand(0, 1) . ") AppleWebKit/$saf (KHTML, like Gecko) Version/$ver Safari/$saf",
&#39;(Macintosh; U; &#39; . $mac_proc[array_rand($mac_proc, 1)] . &#39; Mac OS X 10_&#39; . rand(5, 7) . &#39;_&#39; . rand(0, 9) . &#39; rv:&#39; . rand(2, 6) . &#39;.0; &#39; . $lang[array_rand($lang, 1)] . ") AppleWebKit/$saf (KHTML, like Gecko) Version/$ver Safari/$saf",
&#39;(iPod; U; CPU iPhone OS &#39; . rand(3, 4) . &#39;_&#39; . rand(0, 3) . &#39; like Mac OS X; &#39; . $lang[array_rand($lang, 1)] . ") AppleWebKit/$saf (KHTML, like Gecko) Version/" . rand(3, 4) . ".0.5 Mobile/8B" . rand(111, 119) . " Safari/6$saf",
    
);

    return 
$platforms[array_rand($platforms1)];
}

function 
iexplorer() {
    
$ie_extra = array(
&#39;&#39;,
&#39;; .NET CLR 1.1.&#39; . rand(4320, 4325) . &#39;&#39;,
&#39;; WOW64&#39;
    
);
    
$platforms = array(
&#39;(compatible; MSIE &#39; . rand(5, 9) . &#39;.0; Windows NT &#39; . rand(5, 6) . &#39;.&#39; . rand(0, 1) . &#39;; Trident/&#39; . rand(3, 5) . &#39;.&#39; . rand(0, 1) . &#39;)&#39;
    
);

    return 
$platforms[array_rand($platforms1)];
}

function 
opera() {
    global 
$linux_proc$lang;

    
$op_extra = array(
&#39;&#39;,
&#39;; .NET CLR 1.1.&#39; . rand(4320, 4325) . &#39;&#39;,
&#39;; WOW64&#39;
    
);
    
$platforms = array(
&#39;(X11; Linux &#39; . $linux_proc[array_rand($linux_proc, 1)] . &#39;; U; &#39; . $lang[array_rand($lang, 1)] . &#39;) Presto/2.9.&#39; . rand(160, 190) . &#39; Version/&#39; . rand(10, 12) . &#39;.00&#39;,
&#39;(Windows NT &#39; . rand(5, 6) . &#39;.&#39; . rand(0, 1) . &#39;; U; &#39; . $lang[array_rand($lang, 1)] . &#39;) Presto/2.9.&#39; . rand(160, 190) . &#39; Version/&#39; . rand(10, 12) . &#39;.00&#39;
    
);

    return 
$platforms[array_rand($platforms1)];
}

function 
chrome() {
    global 
$linux_proc$mac_proc;

    
$saf rand(531536) . rand(02);

    
$platforms = array(
&#39;(X11; Linux &#39; . $linux_proc[array_rand($linux_proc, 1)] . ") AppleWebKit/$saf (KHTML, like Gecko) Chrome/" . rand(13, 15) . &#39;.0.&#39; . rand(800, 899) . ".0 Safari/$saf",
&#39;(Windows NT &#39; . rand(5, 6) . &#39;.&#39; . rand(0, 1) . ") AppleWebKit/$saf (KHTML, like Gecko) Chrome/" . rand(13, 15) . &#39;.0.&#39; . rand(800, 899) . ".0 Safari/$saf",
&#39;(Macintosh; U; &#39; . $mac_proc[array_rand($mac_proc, 1)] . &#39; Mac OS X 10_&#39; . rand(5, 7) . &#39;_&#39; . rand(0, 9) . ") AppleWebKit/$saf (KHTML, like Gecko) Chrome/" . rand(13, 15) . &#39;.0.&#39; . rand(800, 899) . ".0 Safari/$saf"
    
);

    return 
$platforms[array_rand($platforms1)];
}

/**
 * Main function which will choose random browser
 * @return string user agent
 */
function random_uagent() {
    
$x rand(15);
    switch (
$x) {
case 1:
    echo "Mozilla/5.0 " firefox() . "\n";
    break;
case 2:
    echo "Mozilla/5.0 " safari() . "\n";
    break;
case 3:
    echo "Mozilla/" rand(45) . ".0 " iexplorer() . "\n";
    break;
case 4:
    echo "Opera/" rand(89) . &#39;.&#39; . rand(10, 99) . &#39; &#39; . opera() . "\n";
    break;
case 5:
    echo &#39;Mozilla/5.0&#39; . chrome() . "\n";
    break;
    }
}

random_uagent();
?>

Приветствую Всех. Собственно, наткнулась на интересное решение рандомного генер. агента. Вот хочется узнать, может есть какая нибудь библиотека в перле, которая тоже может реализовывать схожий функционал. Натыкалась на нечто подобное, но там не именно генерирование агента, а выбор из довольно таки скудного массива этих агентов какого то значения, иными словами, не совсем то. Если перегнать это дело в перл, то много костылей, а именно, с функц. rand () путаница, не нашла в перле аналога strtotime
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 19-07-2012 04:12 » 

Хреновый код: слишком много копипасты, которая должна быть оформлена как функция.

Цитата
Код: (PHP)
date('Ymd', rand(strtotime('2011-1-1'), mktime()))

Да, написали тот еще костыль. С временем это никак не связано и о сути - случайная строка цифр, похожая на дату. Если очень хочется один в один, то посмотри модуль Date::Format (например в RHEL это пакет perl-TimeDate).

Функция rand в PHP и Perl различается:
PHP: int rand(int a, int b), где диапазон равен [a, b].
Perl: float rand(float a), где диапазон равен [0, a).
Соотв., для выдачи целого в диапазоне [a, b]:

Код: (Perl)
$y = $a + int(rand($b + 1));
« Последнее редактирование: 19-07-2012 08:37 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
vika
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #2 : 19-07-2012 15:31 » 

Спасибо, просто не комильфо все делать в лоб, думала, может какой нибудь путевый модуль есть для этого... чтобы подключил, вызвал и все... Не может быть...
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 19-07-2012 15:59 » 

Нет, модуля, который варил бы кофе, нет. Улыбаюсь
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
vika
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #4 : 19-07-2012 16:18 » 

Нет, модуля, который варил бы кофе, нет. Улыбаюсь
Кофе я сама сварю, нужны модули, чтобы приготовить сливки, сахар и вскипятить воду
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 20-07-2012 09:11 » new

сахар готовят китайцы Улыбаюсь
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines