Category: Инструменты

23
Мар
2020

10 примеров использования wget

Знакомимся на практике с wget – популярной утилитой командной строки *nix-систем для извлечения содержимого из интернета.

Что такое wget?

Wget – свободная утилита, предоставляющая неинтерактивный способ загрузки файлов из интернета
по HTTPS, HTTP, FTP и даже HTTP-прокси.

Вы можете запустить wget в фоновом режиме, а он доделает
всю назначенную работу. Обычно утилиту используют для получения всего веб-сайта,
перехода по ссылкам на страницах XHTML/HTML и создания локальной версии сайта.
Синтаксис wget выглядит так:

            wget [option] [URL]
        

1. Скачивание страницы

Попробуем загрузить
страницу github.com:

            wget github.com
        

Если все подключилось,
то wget загрузит домашнюю страницу и покажет результат, как показано ниже:

            wget github.com
URL transformed to HTTPS due to an HSTS policy
--2020-02-23 10:45:52--  https://github.com/
Resolving github.com (github.com)... 140.82.118.3
Connecting to github.com (github.com)|140.82.118.3|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘index.html’

index.html                                       [ <=>                                                                                        ] 131.96K  --.-KB/s    in 0.04s

2020-02-23 10:45:52 (2.89 MB/s) - ‘index.html’ saved [135126]
        

2. Скачивание нескольких
файлов

Круто, если можно
загрузить сразу несколько файлов. Это, кстати, идея для написания какого-нибудь
скрипта для автоматизации загрузки файлов, подумайте на досуге.

Попробуем скачать
архивы с Python 3.8.1 и 3.5.1:

            wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
        

Как вы уже догадались,
синтаксис такой:

            wget URL1 URL2 URL3
        

Не забывайте про пробел
между ссылками!

3. Ограничение скорости
загрузки

Ограничить скорость загрузки полезно,
когда стоит задача проверить, сколько времени занимает загрузка файла на разной
пропускной способности.

Используя опцию --
limit-rate
, вы можете ограничить скорость загрузки.

Вот результат загрузки
файла Node.js:

            wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
--2020-02-23 10:59:58--  https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
Resolving nodejs.org (nodejs.org)... 104.20.23.46, 104.20.22.46, 2606:4700:10::6814:162e, ...
Connecting to nodejs.org (nodejs.org)|104.20.23.46|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14591852 (14M) [application/x-xz]
Saving to: ‘node-v12.16.1-linux-x64.tar.xz’

node-v12.16.1-linux-x64.tar.xz               100%[===========================================================================================>]  13.92M  --.-KB/s    in 0.05s

2020-02-23 10:59:58 (272 MB/s) - ‘node-v12.16.1-linux-x64.tar.xz’ saved [14591852/14591852]
        

Потребовалось 0.05 с, чтобы скачать 13.92 Мб. Теперь попробуем ограничить скорость до 500 Кб/с:

            wget --limit-rate=500k https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
--2020-02-23 11:00:18--  https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
Resolving nodejs.org (nodejs.org)... 104.20.23.46, 104.20.22.46, 2606:4700:10::6814:162e, ...
Connecting to nodejs.org (nodejs.org)|104.20.23.46|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14591852 (14M) [application/x-xz]
Saving to: ‘node-v12.16.1-linux-x64.tar.xz.1’

node-v12.16.1-linux-x64.tar.xz.1             100%[===========================================================================================>]  13.92M   501KB/s    in 28s

2020-02-23 11:00:46 (500 KB/s) - ‘node-v12.16.1-linux-x64.tar.xz.1’ saved [14591852/14591852]
        

Скорость загрузки упала
до 28 с. Представьте себе ситуацию – юзеры жалуются на медленную загрузку.
Вы можете быстро поиграться с limit-rate для имитации проблемы.

4. Загрузка в фоне

Загрузка больших файлов
может занять некоторое время, но что если вы не хотите смотреть в терминал?

Можно использовать ключ
-b, чтобы запустить wget в фоновом режиме:

            wget -b https://slack.com
Continuing in background, pid 25430.
Output will be written to ‘wget-log.1’.
        

5. Игнорирование ошибки
сертификата

Игнорирование ошибки сертификата удобно, когда вам
нужно обратиться к узлу во внешней сети без соответствующего сертификата. Если сертификат не является валидным, по
умолчанию wget выдаст ошибку.

            wget https://expired.badssl.com/
--2020-02-23 11:24:59--  https://expired.badssl.com/
Resolving expired.badssl.com (expired.badssl.com)... 104.154.89.105
Connecting to expired.badssl.com (expired.badssl.com)|104.154.89.105|:443... connected.
ERROR: cannot verify expired.badssl.com's certificate, issued by ‘CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB’:
  Issued certificate has expired.
To connect to expired.badssl.com insecurely, use `--no-check-certificate'.

        

На примере выше результат истекшего срока действия сертификата. Предлагается использовать
--no-check-certificate для игнорирования любой проверки сертификата. Сравним результат с добавленным ключом:

            wget https://untrusted-root.badssl.com/ --no-check-certificate
--2020-02-23 11:33:45--  https://untrusted-root.badssl.com/
Resolving untrusted-root.badssl.com (untrusted-root.badssl.com)... 104.154.89.105
Connecting to untrusted-root.badssl.com (untrusted-root.badssl.com)|104.154.89.105|:443... connected.
WARNING: cannot verify untrusted-root.badssl.com's certificate, issued by ‘CN=BadSSL Untrusted Root Certificate Authority,O=BadSSL,L=San Francisco,ST=California,C=US’:
  Self-signed certificate encountered.
HTTP request sent, awaiting response... 200 OK
Length: 600 [text/html]
Saving to: ‘index.html.6’

index.html.6   100%[===========================================================================================>]     600  --.-KB/s    in 0s

2020-02-23 11:33:45 (122 MB/s) - ‘index.html.6’ saved [600/600]
        

6. Заголовок HTTP ответа

С помощью ключа -S в
терминал будет выведен заголовок, как это произошло с Яндексом:

             wget -S --no-check-certificate https://www.yandex.ru
--2020-03-20 02:52:16--  https://www.yandex.ru/
Resolving www.yandex.ru (www.yandex.ru)... 149.5.244.14, 80.239.201.15
Connecting to www.yandex.ru (www.yandex.ru)|149.5.244.14|:443... connected.
HTTP request sent, awaiting response...
   HTTP/1.1 200 Ok
  Accept-CH: Viewport-Width, DPR, Device-Memory, RTT, Downlink, ECT
  Accept-CH-Lifetime: 31536000
  Cache-Control: no-cache,no-store,max-age=0,must-revalidate
  Content-Length: 199540 
  Content-Type: text/html; charset=UTF-8
  Date: Thu, 19 Mar 2020 23:52:49 GMT
  Expires: Thu, 19 Mar 2020 23:52:50 GMT
  Last-Modified: Thu, 19 Mar 2020 23:52:50 GMT
  P3P: policyref="/w3c/p3p.xml", CP="NON DSP ADM DEV PSD IVDo OUR IND STP PHY PR                                                     E NAV UNI"
  Set-Cookie: yp=1587253970.ygu.1; Expires=Sun, 17-Mar-2030 23:52:49 GMT; Domain                                                     =.yandex.ru; Path=/
  Set-Cookie: mda=0; Expires=Fri, 17-Jul-2020 23:52:49 GMT; Domain=.yandex.ru; P                                                     ath=/
  Set-Cookie: yandex_gid=213; Expires=Sat, 18-Apr-2020 23:52:49 GMT; Domain=.yan                                                     dex.ru; Path=/
  X-Content-Type-Options: nosniff
  X-Frame-Options: DENY
  X-Yandex-Sdch-Disable: 1

        

7. Манипуляции с
User-Agent

Бывает так, что мы хотим открыть сайт с помощью другого user-agent. Это можно сделать, указав ключ --user-agent:

            wget https://gf.dev --user-agent="MyCustomUserAgent"
        

8. Заголовок хоста

Когда приложение находится
в разработке и есть необходимость что-то потестить, но нет подходящего
URL-адреса или мы хотим протестировать домен с использованием IP-адреса – в обеих ситуациях будет полезен --header.

Для примера возьмем
http://10.10.10.1 и application.com в качестве заголовка:

            wget --header="Host: application.com" http://10.10.10.1
        

9. Подключение через
прокси

Если вы работаете в
среде DMZ, вас может не выпускать в интернет. Воспользуйтесь преимуществами
прокси для подключения:

            wget -e use_proxy=yes http_proxy=$PROXYHOST:PORT http://externalsite.com
        

Не забудьте в
переменной $PROXYHOST:PORT указать реальные значения.

10. Подключение через TLS

Обычно рекомендуют
использовать OpenSSL для тестирования протокола TLS. Но можете использовать и
wget.

            wget --secure-protocol=TLSv1_2 https://example.com
        

Вышеизложенное заставит
wget подключиться через TLS 1.2.

Заключение

Если вам интересно подробнее разобраться в утилите, имеется перевод документации wget на русский. В некоторых случаях хорошей альтернативой wget является cURL, а для создания зеркал сайтов (чего cURL не умеет) обычно используется rsync.

Еще вам могут быть интересны следующие публикации:

09
Мар
2020

Что использует команда Tproger: инструменты для мониторинга и улучшения производительности веб-сайта

Рассказываем, как повысить скорость загрузки сайта и с помощью каких инструментов отслеживать показатели. Проверено разработчиками Tproger.
— Читать дальше «Что использует команда Tproger: инструменты для мониторинга и улучшения производительности веб-…

09
Мар
2020

7 лучших читалок книг форматов epub и fb2 для Android, iOS и десктопа

Мы пишем о книгах для разработчиков, поэтому часто получаем вопрос: чем открывать файлы fb2 и epub? В этом посте собрали бесплатные программы-читалки книг на любой вкус.

03
Мар
2020

10 инструментов искусственного интеллекта Google, доступных каждому

Обзор десяти инструментов Google для ИИ, которые могут использовать разработчики, компании и аналитики. Где искать качественные наборы данных и как привязать к проекту готовую модель TensorFlow.

26
Фев
2020

Какие инструменты и подходы использовать для тестирования фронтенда — рассказывают эксперты

Во фронтенд-тестировании существуют разные подходы и инструменты, в которых легко запутаться. Узнаём у экспертов, что они рекомендуют использовать.
— Читать дальше «Какие инструменты и подходы использовать для тестирования фронтенда — рассказывают эксп…

23
Янв
2020

Что нового в Pandas 1.0? 🐼

Pandas – популярная библиотека Python для работы с табличными данными, добавляющая к структуре массива NumPy именованные строки и столбцы, а также множество удобных методов. Pandas является одной из важных причин, почему Python стал доминирующим языком программирования в Data Science.

16
Янв
2020

Как повысить продуктивность при анализе данных? 25 неочевидных инструментов

Список бесплатных инструментов и библиотек для аналитиков данных. Заслуживающие внимания пакеты, программы и ресурсы, о которых не так часто упоминают, как о NumPy, Pandas или Jupyter.

Ниже представлен сжатый обзор 25 инструментов для самых разнообразных приложений науки о данных. Быстрый скрапинг веб-страниц и визуализация, анализ поведения клиентов и безопасное хранение ключей, работа в команде и развертывание моделей на облачных GPU.

В комментариях к публикации предлагаем поделиться своими любимыми библиотеками и инструментами.

Обзор DS инструментов:

  • Airtable: электронная таблица с мощью базы данных, альтернатива Google Sheets или Microsoft Excel. Отлично работает с Pandas, благодаря Python API. То что нужно для демонстрации результатов.
  • Orange: open source платформа, заточенная под машинное обучение и визуализацию данных, для которой не нужно уметь кодить. Качественная альтернатива Tableau или Power BI.
  • MarkDown: приложение для заметок на Node.js, полноценно работающее в офлайне с возможностью размещения на своём сервере.
  • Deepnote: приложение на базе Jupyter Notebook, созданное для совместной работы в реальном времени.

  • Dash by Plotly: JavaScript инструмент визуализации данных с открытым исходным кодом. Запустите готовую модель на Python или R, а Dash позаботится об остальном. Идеально подходит для создания мелких веб-приложений для показа клиенту.
  • KeeWeb: средство для безопасного хранения API-ключей и паролей.
  • MLxtend (сокр. от Machine Learning Extensions) – библиотека Python инструментов для повседневных задач обработки данных. Создатель – автор книги «Машинное обучение на Python» Себастьян Рашка.
            import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import itertools
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from mlxtend.classifier import EnsembleVoteClassifier
from mlxtend.data import iris_data
from mlxtend.plotting import plot_decision_regions

# Initializing Classifiers
clf1 = LogisticRegression(random_state=0)
clf2 = RandomForestClassifier(random_state=0)
clf3 = SVC(random_state=0, probability=True)
eclf = EnsembleVoteClassifier(clfs=[clf1, clf2, clf3],
                              weights=[2, 1, 1], voting='soft')

# Loading some example data
X, y = iris_data()
X = X[:,[0, 2]]

# Plotting Decision Regions

gs = gridspec.GridSpec(2, 2)
fig = plt.figure(figsize=(10, 8))

labels = ['Logistic Regression', 'Random Forest', 
          'RBF kernel SVM', 'Ensemble']

for clf, lab, grd in zip([clf1, clf2, clf3, eclf],
                         labels,
                         itertools.product([0, 1],
                         repeat=2)):
    clf.fit(X, y)
    ax = plt.subplot(gs[grd[0], grd[1]])
    fig = plot_decision_regions(X=X, y=y,
                                clf=clf, legend=2)
    plt.title(lab)

plt.show() 
        

  • Lifetimes: библиотека для анализа поведения клиентов, прогнозирования прибыли и оттока
  • GitLab: альтернативное GitHub хранилище репозиториев с возможностью скрывать групповые репозитории. Удобно для закрытой командной работы и группового участия в ML-соревнованиях.
  • Draw.io: создания диаграмм для планирования проекта.
  • Spider: простой скраппер для веб-страниц в виде расширения Chrome. Можно скачивать страницы в CSV/JSON формате.
  • Simple Scraper: превратите любой сайт в API.
  • Airbnb Knowledge repo: ресурс для обмена знаниями между специалистами в области обработки данных и других технических профессий. Был создан для решения проблемы распространения знаний в рамках растущей команды.

  • Kyso: сервис помогает создать привлекательное и структурированное портфолио аналитика данных. Вы сможете просматривать чужие портфолио, увидите, как другие представляют себя и свои данные. Бесплатный период 14 дней.
  • LabelImg: графический инструмент для разметки объектов на картинках, добавление подписей и тегов изображений.

  • Reveal.js: фреймворк для создания HTML-презентаций. Многие аналитики используют его на своих выступлениях.
  • PythonAnywhere: простой способ развернуть онлайн лёгкий ML-проект на Python и сопутствующих библиотеках, если пока требуется лишь проверить гипотезу. В случае успеха легко перенести на AWS (руководство).
  • Sheety: превратите Google Sheet в API и моделируйте данные в реальном времени.
  • Jupyterthemes: устали от текущей темы Jupyter Notebook? Есть много других.
  • Light GBM: одна из популярных библиотек для односторонней выборки на основе градиента. В последние годы приобрела большую популярность, особенно на Kaggle.

  • Machine Learning A-Z: Practice Datasets and Codes: большое собрание данных и кода на Python и R, охватывающее популярные алгоритмы машинного обучения.
  • Gradient by Paperspace: запускайте блокноты Jupyter бесплатно на облачной машине, оснащённой графическими процессорами.
  • Glueviz: визуализируйте многомерные наборы данных. Бесплатный инструмент на основе Python (поставляется с Anaconda). Отлично подходит для поиска связей между наборами данных.

  • Hot dog or not hot dog?: мануал, не требующий знаний AI, машинного обучения и даже программирования. Руководство о том, как с IBM Watson написать программу для проверки, является ли объект хот-догом 🌭 или нет. Самый важный ресурс в подборке 😉
  • FloydHub Workspaces: облачная среда разработки для глубокого обучения. Можно запускать блокноты Jupyter, скрипты Python, использовать терминал и многое другое.

О чём-то не упомянули? Напишите, мы дополним статью вашими ссылками

19
Июл
2019

Вышла бета-версия TabNine, «умного» инструмента автозаполнения для редакторов кода

Он натренирован на 2 миллионах файлов с GitHub и умеет работать с несколькими языками: Python, Java, C++ и Haskell.
— Читать дальше «Вышла бета-версия TabNine, «умного» инструмента автозаполнения для редакторов кода»

13
Июн
2019

Инструменты для организации эффективного процесса веб-разработки

Взаимодействие между участниками веб-разработки включает в себя много аспектов и бывает затруднительным по разным причинам.

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

11
Апр
2019

Хакатон MegaHack

Предлагают разработать цифровое решение для адаптации детей-сирот к взрослой жизни посредством геймификации и «умный» алгоритм анализа действий сотрудников.
— Читать дальше «Хакатон MegaHack»

03
Апр
2019

Хакатон MegaHack

На очередном хакатоне из серии MegaHack нужно будет создавать решения для корпоративной социальной ответственности, поддержки бизнеса и помощи клиентам.
— Читать дальше «Хакатон MegaHack»

22
Мар
2019

Хакатон Digital SuperHero EnergyHack

Нужно сделать маркетплейс для поиска исполнителей услуги на подключение потребителей к электросетям. Лучшие получат деньги и возможность сотрудничества.
— Читать дальше «Хакатон Digital SuperHero EnergyHack»

21
Янв
2019

Создаём сайт без навыков программирования: обзор лучших конструкторов

Вы читаете свежую версию статьи. Мы обновили и дополнили материал, изначально опубликованный 15 июля 2018 года.
— Читать дальше «Создаём сайт без навыков программирования: обзор лучших конструкторов»

16
Янв
2019

В помощь веб-разработчику: полезные проекты и инструменты для работы с Chrome DevTools

Работу современного веб-разработчика сложно представить без вспомогательных инструментов. Один из самых популярных — Chrome DevTools. Этот набор инструментов помогает тестировать, отлаживать, профилировать, проверять код на соответствие тем или иным ст…

27
Дек
2018

Веб-фреймворк Electron обновили до версии 4.0

Выпустили Electron 4.0 — фреймворк для создания кроссплатформенных приложений с помощью веб-технологий. На базе Electron построен текстовый редактор Atom, редактор кода Visual Studio Code, мессенджер Discord, клиентское приложение чата Slack
— Читать д…

14
Дек
2018

Вышел фреймворк Bootstrap 3.4

Вышел Bootstrap 3.4 — свободный фреймворк для создания сайтов и веб-приложений. Команда проекта сосредоточена на разработке Bootstrap 4.2, поэтому текущая версия получила не так много изменений. В частности, обновлена документация, исправлена проблема …

10
Дек
2018

Релиз PyTorch 1.0 Stable, библиотеки для машинного обучения от Facebook

Facebook выпустила стабильную версию библиотеки для машинного обучения PyTorch 1.0. В данную итерацию добавили поддержку крупных облачных платформ, интерфейс на C++, набор JIT-компиляторов и различные улучшения. Новые возможности библиотеки Стабильная …

08
Дек
2018

Вышла Qt Creator 4.8.0 с поддержкой протокола языкового сервера

Qt Development Frameworks представила среду разработки Qt Creator 4.8.0. В новой версии кроссплатформенной IDE пользователей ждут: поддержка протокола языкового сервера (LSP); плагин ClangFormat для автоматического форматирования кода; обновление до LL…

08
Дек
2018

Вышла WordPress 5.0: новый редактор и блочная система

Вышла версия 5.0 системы управления контентом WordPress. Она получила кодовое название «Bebo». В новой версии добавлена возможность размещать весь контент в блоках, что позволяет легко настроить внешний вид сайта и порядок расположения данных
— Читать …

06
Дек
2018

Выпущен инструмент для сборки node-пакетов одной командой

В Zendesk разработали node-publisher — инструмент для сборки пакетов Node.js одной командой. Зачем это нужно? Нередко при сборке пакета разработчики забывают тот или иной шаг, проводят тестирование неверной версии или вовсе забывают
— Читать дальше «Вы…

06
Дек
2018

В поиске Google и приложении Google Assistant теперь отображаются прямые трансляции

Google рассказала о новых инструментах для прямых трансляций. В установленное время на изображении предварительного просмотра как в поисковой выдаче, так и в приложении Google Assistant появится иконка Live. Таким образом пользователи смогут своевремен…