Правка заголовка

Статус
В этой теме нельзя размещать новые ответы.

droid

Создатель
Регистрация
2 Авг 2011
Сообщения
37
Реакции
4
Парни привет.
Вопрос возник с регуляркой по замене значений в заголовке HTTP запроса (GET\POST)
Я хочу менять Cookie на мой вне зависимости от того есть он в запросе или нет. Идея следующая если есть параметр Cookie заменить на мой, если нет то дописать мой парметр Cookie.
Пробовал сделать (^Cookie:.*$)? но не работает. Точнее работает только в запросах когда есть Cookie, а если его нет то не работает замена. Помогите составить.
 
Последнее редактирование:

Delk0

Гуру форума
Регистрация
26 Мар 2010
Сообщения
290
Реакции
67
Конечно замена не будет работать если нет нужной куки и нечего заменять.
Нужно заменить какую-то конкретную куку?
Лучше проверять наличие нужной куки и если ее нет - устанавливать свою через дополнительный заголовок.
Хотелось бы увидеть кусок кода, который заменяет. Тогда будет нагляднее.
 

droid

Создатель
Регистрация
2 Авг 2011
Сообщения
37
Реакции
4
Да нет кода. Это на лету в проксе(3proxy) делаю.
План конечно родился удалить куки, затем дописать куки.
Надо 2 правила
соответсвенно первое вроде (^Cookie:.*$)? заменяю на "", но тогда надо почистить заголовок от перевода строки и дописать внизу свою куку.
Может подскажете как выбрать весь заголовок и дописать куки?

Давайте дам сразу реальные данные, думаю так будет лечге. Я хочу, чтоб при запросе от пользователя летела кука что он прошёл через проксю, все остальное надо отрезать.
Пробовал вот так (^(Cookie:.*)$)|(^(Upgrade-Insecure-Requests:(.*)\R))
Вот такой у меня запрос:
Код:
GET / HTTP/1.1
Host: hwstat.mon.local
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Cookie: TeST=bb
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Connection: keep-alive
Логика такая, что если у меня есть куки меняем его на мою строчку Cookie: proxy=yes,
если куки нет то надо дописать Cookie: proxy=yes после Upgrade-Insecure-Requests: 1.
Но на данный моент это не работет.
Код:
GET / HTTP/1.1
Host: hwstat.mon.local
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1

GET / HTTP/1.1
Host: hwstat.mon.local
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1


Upgrade-Insecure-Requests:  1
Cookie: proxy=yes
Cache-Control: max-age=0
Connection: keep-alive
 
Последнее редактирование модератором:

Delk0

Гуру форума
Регистрация
26 Мар 2010
Сообщения
290
Реакции
67
Т.е. остальные куки надо вырезать в любом случае?
Тогда можно удалить все куки на первом шаге, а на втором заменить Upgrade-Insecure-Requests: 1 на
Upgrade-Insecure-Requests: 1
Cookie: proxy=yes
 
Последнее редактирование:

droid

Создатель
Регистрация
2 Авг 2011
Сообщения
37
Реакции
4
Пробовал, но тут жо. Вырезаю куки, получаю перевод строки лишний который ломает заголовок.
 

lag

Мой дом здесь!
Регистрация
13 Окт 2014
Сообщения
290
Реакции
366
Логика такая, что если у меня есть куки меняем его на мою строчку Cookie: proxy=yes,
если куки нет то надо дописать Cookie: proxy=yes
Код:
\A(?:[^\r\n]+\K(\r?\n)?)+?(?i:Cookie:[^\r\n]*|\K\Z)

$1Cookie: proxy=yes
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
 

droid

Создатель
Регистрация
2 Авг 2011
Сообщения
37
Реакции
4
lag Ваша строка опупительна. Читал объяснение на страницах - круть. Снимаю шляпу.
К сожалению она не завелась(у меня perl), продолжаю эксперементы по её вкручиванию в эллегантное решение.
Делаю 2 прохода
Код:
(^Cookie:(.*)$)(.*)" "$3"
второй
Код:
"(^Upgrade-Insecure-Requests:(.*)$)" "Cookie: proxy=yes\r\nUpgrade-Insecure-Requests: $2"
надо было ^ затащить во внутрь скобок тогда удаётся избавиться от повторений.
 
Последнее редактирование:

lag

Мой дом здесь!
Регистрация
13 Окт 2014
Сообщения
290
Реакции
366

droid

Создатель
Регистрация
2 Авг 2011
Сообщения
37
Реакции
4
Возможно я не прав, но вроде по сырцам прикручено от перла.
Код:
pcre_rewrite cliheader dunno "\A(?:[^\r\n]+\K(\r?\n)?)+?(?i:Cookie:[^\r\n]*|\K\Z)" "$1Cookie: proxy=yes"
вот такая в итоге строка
вот включеные опции
Код:
pcre_options PCRE_CASELESS PCRE_MULTILINE PCRE_NEWLINE_ANYCRLF
Ни с куками ни без них не работает. Отключение опций не помогает
 

lag

Мой дом здесь!
Регистрация
13 Окт 2014
Сообщения
290
Реакции
366
А если попробовать на версии 0.9b-devel
Код:
pcre_rewrite cliheader dunno "\A(?:.+\n)+?\K(?i:Cookie:.*\n|\z)" "Cookie: proxy=yes\r\n"
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху