Текст эха/Печати в цвете данного шестнадцатеричного кода (независимо от Xresources/Xdefaults)

Этот вид сайта пытается мешать не использовать графический веб-браузер, потому что при использовании wget, Вы будете пропускать всю эту рекламу, которая платит за пропускную способность.

Некоторые сайты не осуществляют усовершенствованные проверки и могут быть обмануты легко: скажите wget притворяться, что это - действительно Mozilla и что это прибывает из сайта для скачивания.

wget --user-agent='Mozilla/5.0 (Windows NT 6.0) Gecko/20100101 Firefox/14.0.1' \
     --referer=http://downloadsite.example.com/download-page-url
     http://downloadsite.example.com/download-page-url/filename.ext`

Большинство сайтов, которые проверяют, позволяет Вам сойти с рук --user-agent=Mozilla и --referer набор к URL файла Вы загружаете.

С некоторыми сайтами Вы, возможно, должны были бы экспортировать cookie веб-браузера и передачу --load-cookies к wget; в этой точке с помощью wget начинает быть большим количеством работы, чем ручная загрузка. Окончательный метод, который может работать все время, но требует некоторого кодирования для каждого сайта, должен использовать платформу автоматизации браузера, такую как Selenium или Watir.

См. также Автоматизирующие веб-запросы с помощью завихрения?

2
06.12.2013, 01:43
1 ответ

Много эмуляторов терминала позволяют переопределять цвета с escape-последовательностями, существует даже terminfo возможность этого: initc. С теми и принятием terminfo базы данных корректно, можно сделать:

tput initc 1 1000 0 0

К переопределяет цвет 1 (обычно red) к 1 000%-му красному, 0‰-му зеленому, 0‰-му синему цвету (#ff0000).

Так:

tput initc 1 1000 0 0
tput setaf 1 # to set the foreground color to 1
echo '██ = #FF0000'
tput sgr0

сделал бы то, что Вы хотите.

Для наблюдения что escape-последовательность, которая соответствует:

$ tput initc 1 1000 0 0 | cat -vt
^[]4;1;rgb:FF/00/00^[\

Так, на моем терминале (xterm), я могу также сделать:

printf '\e]4;1;rgb:FF/00/00\e\\\e[31m██ = #FF0000\e[m\n'

Обратите внимание, что это изменяет цвет color1. Таким образом, при изменении этого на синий весь текст, который был отображен с тем цветом, автоматически изменит цвет.

Сбрасывать цвета к их начальным значениям (начальная буква в то время xterm был запущен), с xterm:

printf '\e]104\a'

Или сбрасывать единственный цвет:

printf '\e]104;1\a'

Для запросов текущего значения цвета существует управляющая последовательность, которая вызывает xterm передавать значение обратно как терминальный вход. Можно использовать xtermcontrol команда для помощи:

$ xtermcontrol --get-color1
rgb:ffff/ffff/0000

Но это только работает на первые 16 цветов (xterm в наше время поддержки 256).

На терминалах, которые не поддерживают сброс цветов к их значениям по умолчанию, но поддерживают 256 цветов а-ля xterm, можно хотеть использовать цвета 17 и выше поскольку они редко используются приложениями.

Однако обратите внимание, что некоторая terminfo база данных неправильно указывает, как присвоить и использовать те цвета для тех терминалов, таким образом, можно хотеть любого к hardcode escape-последовательности силы $TERM к чему-то как xterm-256color.

printf '\e]4;17;rgb:ff/ff/00\a\e[38;5;17mThis is yellow\e[m\n'
printf '\e]4;18;rgb:ff/00/ff\a\e[38;5;18mThis is magenta\e[m\n'
6
27.01.2020, 21:54
  • 1
    : это изменяет терминальные настройки с AFAIK никакой способ восстановить их к их исходному состоянию, когда приложение выходит. (Можно восстановить цвета по умолчанию с tpuc oc, но это не работает, если пользователь настроил свои цвета динамично.) огромное спасибо –  Gilles 'SO- stop being evil' 06.12.2013, 03:40
  • 2
    @Gilles, oc возможность, кажется, не определяется для xterm в моей terminfo базе данных, но printf '\e]104\a' действительно сбрасывает цвета к соответствию X ресурсов (как определено системой или пользователем). См. мой обновленный ответ. –  Stéphane Chazelas 06.12.2013, 13:11
  • 3
    Но это восстанавливает цвета по умолчанию, не цвета от когда запущенное приложение. Эта установка предназначена как пользовательская настройка, она не может использоваться в качестве настройки приложения, если приложение не запускает терминал для собственного использования. –  Gilles 'SO- stop being evil' 06.12.2013, 13:13
  • 4
    @Gilles, хорошо, я теперь вижу то, что Вы имеете в виду. Приложение может все еще запросить значения текущего цвета на запуске и восстановить их на выходе. –  Stéphane Chazelas 06.12.2013, 13:14

Теги

Похожие вопросы