Мне нравится анализировать HTML с регулярными выражениями. Я не пытаюсь разбирать идиот HTML, который намеренно нарушен. Этот код является моим основным парсером (версия Perl):
$_ = join "",; tr/\n\r \t/ /s; s/\n/>\n/g; s/\n ?\n/\n/g;
s/^ ?\n//s; s/ $//s; print
Он называется htmlsplit, разбивает HTML на строки, с одним тегом или фрагментом текста в каждой строке. Затем линии могут быть обработаны другими текстовыми инструментами и сценариями, такими как grep , sed , Perl и т. Д. Я даже не шучу :) Наслаждайтесь.
Достаточно просто переписать мой скрипт Perl-all-first Perl в приятную поточную вещь, если вы хотите обрабатывать огромные веб-страницы. Но это действительно не обязательно.
Бьюсь об заклад, я заберусь для этого.
Против моего ожидая, что это получило некоторые upvotes, поэтому я предлагаю несколько правильных выражений:
/(<.*?>|[^<]+)\s*/g # get tags and text
/(\w+)="(.*?)"/g # get attibutes
Они хороши для XML / XHTML.
С небольшими вариациями он может справиться с беспорядочным HTML ... или сначала конвертировать HTML -> XHTML.
Лучший способ записи регулярных выражений - в Lex / Yacc стиль, а не непрозрачные однострочные или прокомментированные многострочные чудовища. Я не делал этого здесь; эти им едва ли нужны.
Чтобы использовать HTTPS с localhost
, нам фактически нужны два сертификата: корневой сертификат и сертификат домена специально созданный для домена localhost
.
Эти изящные сценарии , которые я нашел, заботятся о создании обоих. Они очень просты в использовании - просто внимательно следуйте инструкциям, и все будет хорошо. Единственное, что не так ясно в документации, это то, что там, где написано Then mark the certificate as trusted
, это означает, что вы должны щелкнуть по сертификату в Keychain Access и изменить опцию Trust
на Always
.
( Здесь вы можете найти более подробное объяснение того, что на самом деле делают эти сценарии)
Если все работало для вас, у вас теперь должно быть два файла server.crt
и server.key
. Я создал папку ssl
в /Applications/MAMP
и переместил в нее файлы; но вы можете разместить их там, где считаете нужным.
Давайте теперь забудем о файлах и перейдем к некоторой конфигурации Apache.
По умолчанию Apache не настроен на прием SSL-соединений, поэтому мы должны это изменить. Откройте /Applications/MAMP/conf/apache/httpd.conf
и убедитесь, что следующие строки НЕ закомментированы. Если это так, удалите #
в начале строки:
LoadModule ssl_module modules/mod_ssl.so
Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf
Также найдите эту строку:
Servername localhost:443
и убедитесь, что порт установлен на 443 443 - это порт по умолчанию для защищенных соединений HTTPS (обычные незащищенные HTTP-соединения по умолчанию прослушивают порт 80).
Далее откройте /Applications/MAMP/conf/apache/extra/httpd-ssl.conf
и убедитесь, что у вас есть эта строка:
Listen 443
Опять же, это важно, потому что мы должны настроить все на одном и том же порту. Для этого вам также следует щелкнуть значок MAMP в док-станции вашего MAC, нажать Preferences
, перейти на вкладку Ports
и выбрать Set Web & MySql ports to 80 & 3306
.
Остановите и перезапустите MAMP, чтобы применить сделанные нами изменения.
Находясь еще в /Applications/MAMP/conf/apache/httpd.conf
, ищите эти строки:
<VirtualHost _default_:443>
# General setup for the virtual host
DocumentRoot "/Applications/MAMP/Library/htdocs"
ServerName www.example.com:443
Эти строки задают поведение Apache по умолчанию для всех HTTPS-соединения. ServerName
- это просто фиктивное имя, которое вы должны заменить на localhost
; Вы также должны убедиться, что значение по умолчанию DocumentRoot
соответствует корневой папке вашего проекта.
Поэтому измените приведенные выше строки следующим образом:
<VirtualHost _default_:443>
# General setup for the virtual host
DocumentRoot "/path/to/your/htdocs"
ServerName localhost
Если вы прокрутите немного дальше, пока мы все еще в директиве VirtualHost
по умолчанию, вы найдете эти две строки :
SSLCertificateFile "/Applications/MAMP/conf/apache/server.crt"
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/server.key"
Измените их так, чтобы вы помещали файлы, которые мы сгенерировали на шаге 1. Как я уже говорил, я поместил мои в "/ Applications / MAMP / ssl", поэтому я изменил вышеуказанные строки:
SSLCertificateFile "/Applications/MAMP/ssl/server.crt"
SSLCertificateKeyFile "/Applications/MAMP/ssl/server.key"
Остановите и перезапустите MAMP, чтобы применить изменения. Теперь, если вы перейдете на https://localhost
, вы сможете увидеть список проектов в вашей корневой папке. Вот и все для localhost
!
Что делать, если вы хотите создать собственный домен myproject.dev
и использовать SSL для этого тоже, так что вы может получить доступ к нему в https://myproject.dev
?
Как и в случае с localhost
, нам нужно создать сертификат SSL специально для домена myproject.dev
, а затем настроить виртуальный хост для myproject.dev
. Начнем с создания сертификата.
Опять же, я нашел этот маленький инструмент под названием create-ssl-certificate
, который сгенерирует для вас сертификат SSL для определенного локального домена. Это тоже очень легко использовать, единственная не совсем понятная часть - это пакет NPM, который вы можете установить глобально с помощью npm -g install create-ssl-certificate
.
Если все прошло хорошо с create-ssl-certificate
, теперь у вас должно быть два файла, как это было с localhost
на шаге 1. По умолчанию create-ssl-certificate
вызывает сгенерированные файлы ssl.crt
и [1142 ]. Я переименовал их в server.crt
и server.key
, чтобы соответствовать файлам localhost
. Затем я создал папку ssl
в корневой папке myproject
и переместил туда файлы.
Давайте на минутку забудем о файлах и перейдем к некоторой конфигурации Apache.
Если вы уже создавали виртуальные хосты, вы, вероятно, уже сделали это, поэтому вы можете пропустить этот шаг.
Единственное, что нам нужно сделать, чтобы «активировать» возможность создания виртуальных хостов, это перейти на /Applications/MAMP/conf/apache/httpd.conf
и раскомментировать эту строку:
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
Теперь мы можем настроить виртуальный хост, чтобы мы могли получить доступ к myproject
в https://myproject.dev
. Прежде всего, отредактируйте файл hosts
и добавьте эту строку:
127.0.0.1 myproject.dev
Затем перейдите к /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
и добавьте следующее:
<VirtualHost myproject.dev:443>
ServerName myproject.dev
DocumentRoot "/Users/myusername/Sites/myproject"
SSLEngine on
SSLCertificateFile "/Users/myusername/Sites/myproject/ssl/server.crt"
SSLCertificateKeyFile "/Users/myusername/Sites/myproject/ssl/server.key"
</VirtualHost>
С этой конфигурацией вы будет иметь доступ к https://myproject.dev
, потому что серверу дано указание искать SSL-сертификаты, которые мы создали на шаге 4.