1. PHP / Говнокод #22320

    −14

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    <?php
    define('SUBMIT_URL', 'http://archive.li/submit/');
    define('REFERER_URL', 'http://archive.li/');
    define('DEFAULT_UA', 'Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.16');
    define('POST_HEADERS', 
    "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n"
    ."Accept-Language: ru-RU,ru;q=0.9,en;q=0.8\r\n"
    ."Content-Type: application/x-www-form-urlencoded\r\n");
    define('CSRF_SELECT', "//form[@id='submiturl']/input[@name='submitid']");
    define('MY_COOKIES', '__cfduid=d7474a5cc42c65aa882c01a40e7ea74f61484324040');
    
    function getCsrf($url) {
    	$context_options = stream_context_create(array('http' => array(
    	  'method' => 'GET',
    	  'user_agent' => DEFAULT_UA,
    	  'header' => 'Referer: '. REFERER_URL . "\r\n" . 'Cookie: ' . MY_COOKIES
    	)));
    	$links = array();
    	$file = @file_get_contents($url, false, $context_options);
    	if ($file) {
    	  $old_libxml_error = libxml_use_internal_errors(true);
    	  $dom = new DOMDocument;
     	  $dom->loadHTML($file);
    	  libxml_use_internal_errors($old_libxml_error);
     	  $domxpath = new DOMXPath($dom);
     	  $filtered = $domxpath->query(CSRF_SELECT);
    	  foreach ($filtered as $item) {
    		$links[] = $item->getAttribute('value');
    	  }
    	}  
    	return $links[0];
    }
    
    function doPost($url, $referer, $token) {
    	$postdata = http_build_query(array(
    	  'submitid' => $token,
    	  'url' => $url
     	));
    	$context_options = stream_context_create(array('http' => array(
    	  'protocol_version' => 1.1,
    	  'method' => 'POST',
    	  'user_agent' => DEFAULT_UA,
    	  'header' => POST_HEADERS . 'Referer: '. $referer . "\r\n" . 'Cookie: ' . MY_COOKIES,
    	  'content' => $postdata,
    	  'follow_location' => 1,
    	  'max_redirects' => 20,
    	  'timeout' => 1.0,
    	  'ignore_errors' => true
    	)));
    	return file_get_contents(SUBMIT_URL, false, $context_options);
    }
    
    $csrf = getCsrf(REFERER_URL.'?url='.urlencode($argv[1]));
    $result = doPost($argv[1], REFERER_URL.'?url='.urlencode($argv[1]), $csrf);
    if ($result) echo $argv[1] . ' OK' . PHP_EOL;

    Бекапилка URL в сервисе archive.li (он же archive.is, archive.ec, archive.today).

    Запостил: inkanus-gray, 13 Февраля 2017

    Комментарии (25) RSS

    • SEO-пост.

      Метки: #рукописинегорят.

      P.S. Результат работы тут, проверь:
      http://archive.li/govnokod.ru
      Ответить
    • Очень захотелось въебать минус, но увидев, что это пост Инкануса, я сдержался и захотел поставить плюс, но вспомнив, что поначалу я хотел въебать минус, я не въебал вообще ничего.
      Ответить
    • В коде забыли закрыть тег, поэтому, чтобы не нарушать пространственно-временной континуум, я закрою его здесь
      ?>
      Ответить
      • его не нужно закрывать
        Ответить
      • Его со спецом не закрывают, чтобы перевод строки после ?> не попал на выхлоп. PHP такое PHP.
        Ответить
        • Пыхопроблемы
          Ответить
        • У меня в коде до 127 запросов отдельных скриптов перед рендером, каждый - в своём файле. Каждый - закрыт.
          Однако вывод - чист. ЧЯДНТ?
          Ответить
          • > ЧЯДНТ?
            Пишешь на рнр.
            Ответить
          • не чтишь PSR-2

            http://www.php-fig.org/psr/psr-2/

            > The closing ?> tag MUST be omitted from files containing only PHP.
            Ответить
            • Я напоминаю, что на этом сайте пыху принято обсмеивать, а не обсуждать.
              Ответить
              • да тут от самой ситуации наличия тегов, внутри которых только начинается язык программирования, можно со смеху лопнуть
                Ответить
                • > наличия тегов, внутри которых только начинается язык программирования
                  <script></script>
                  Ответить
                  • js тоже забавный, но пример некорректный, язык их не требует совершенно
                    Ответить
              • В своих отделах пишите, не надо тут писать.
                Ответить
            • >>Code MUST use 4 spaces for indenting, not tabs.
              Спасибо, не надо.
              >>All PHP files MUST use the Unix LF (linefeed) line ending.
              Расскажите это IDE, которые сами в EOL'ах путаются (VisualStudio, например).
              Альзо, это ж на каком говне мамонта надо обслуживать систему, если оно ещё не понимает разные EOL'ы?
              2.3.2 и 2.3.3 - Взаимоисключающие параграфы. Если линия ДОЛЖНА быть меньше 80, то она не может быть засофткаплена на 120. Соответственно наоборот.
              5.1.1 - противоречит стандарту (де-факто это исключение) и 5.1.2 - это, блядь, что за аргументация?..
              Как минимум - такие брейсы как в 5.1.1 не дают красиво комментировать блок, что при разработке из псевдокода очень не удобно.
              Ответить
              • Класть даже на пыхостандарты - это вполне в духе пыхи. Пыхоцарь лучше знает, как надо.
                А еще ты по-английски читать не умеешь. Вот почитай, что означают must и should капсом https://tools.ietf.org/html/rfc2119
                Ответить
              • 1. ебать полыхнуло
                2. вы посмотрите, да он использует табы!
                3. ого, мы должны рассказывать что-то там IDE!
                4. он думает, нам важно его мнение!
                5. разработка из псевдокода? что я сейчас прочитал?
                6. взаимоисключающий пункт, чтобы было до чего доебаться в ответе
                Ответить

    Добавить комментарий