Я хочу иметь возможность читать URL-запросы GET, поступающие на мой сервер, например: «www.JohnAlexINL.com/ping» или «http://johnalexinl.com/» и так далее.
Я пытался использовать TCPDump, но это выдает кучу искаженной чепухи, которую я не могу понять, как преобразовать обратно в исходный запрос (я могу отслеживать источники и читать пакеты, но не могу их вернуть в URL). Я также пытался просто прослушивать свои порты TCP/UDP/HTTP, но это вызывает проблемы совместимости с Apache, что приводит к закрытию моего веб-сайта.
Я попробовал это первым
sudo tcpdump -vv -x -i lo 'port 80'
и без порта 80 позже
sudo tcpdump -vv -x -i lo
Я попробовал несколько других конфигураций, сохранил его в файл и просмотрел его, но я делал это в IDLE, поэтому я больше не помню, как именно я все это набрал. Простите за это
Я надеялся, что увижу «Handshake» TCP, запрос GET и несколько ответных пакетов, в которых есть фактические данные.
У меня есть что-то похожее, но не то, что я действительно могу использовать, поскольку в нем говорится только о том, какие данные были перемещены, а не о запросе, который требует ответа.
Выдержка:
19:45:25.293910 IP (tos 0x0, ttl 64, id 4474, offset 0, flags [DF], proto UDP (17), length 103)
localhost.domain > localhost.36156: [bad udp cksum 0xfe9a -> 0xee1b!] 30218 q: PTR? 53.0.0.127.in-addr.arpa. 1/0/1 53.0.0.127.in-addr.arpa. PTR localhost. ar: . OPT UDPsize=65494 (75)
0x0000: 4500 0067 117a 4000 4011 2ad6 7f00 0035
0x0010: 7f00 0001 0035 8d3c 0053 fe9a 760a 8180
0x0020: 0001 0001 0000 0001 0235 3301 3001 3003
0x0030: 3132 3707 696e 2d61 6464 7204 6172 7061
0x0040: 0000 0c00 01c0 0c00 0c00 0100 0000 0000
0x0050: 0b09 6c6f 6361 6c68 6f73 7400 0000 29ff
0x0060: d600 0000 0000 00
Отрывок, который вы опубликовали, представляет собой DNS-запрос по UDP, а не часть TCP-соединения.
Не цитируйте фильтр. tcpdump -vv -x -i lo port 80
@Barmar - попробовал еще раз без фильтра, ничего не изменилось; тот же вывод в терминале. Я опубликовал этот отрывок только для того, чтобы показать, что я получаю только источники, адресаты и пакеты. Меня интересует только URL-адрес, который изначально ввел пользователь, и я получаю почти все, кроме этого. Не хотел выкладывать здесь дамп. Подробное описание TCP и UPD выглядит примерно одинаково: localhost.58340 > localhost.http: Flags [S], cksum 0xfe30 (неверно -> 0x1720), seq 1056236181, win 43690, options [mss 65495, sackOK, TS val 7440351 ecr 0,nop,wscale 7], длина 0 ``` например
@ChrisJohnson - я пытаюсь отслеживать запросы GET, поступающие на мой веб-сайт, чтобы использовать сценарии Python для автоматического обновления моей базы данных. Например, я хочу иметь возможность передать запрос типа «johnalexinl.com/_rep11xupdate», а затем заставить мой скрипт Python сгенерировать текстовый файл со списком файлов, которые потребуют обновления после версии 11 программы REP для моих POS-систем.
Я бы смотрел журналы Apache вместо того, чтобы сидеть на сетевом уровне. Просто читайте журналы apache по мере их появления, когда появляется новая строка, запускайте нужное вам обновление.
Вы используете совершенно неправильный набор инструментов. Выберите простой веб-фреймворк, такой как web.py, и следуйте примерам.
Я не знал, что эта служба существует, и она распечатывает запросы GET, как настройку по умолчанию! Большое спасибо, Крис. Должно быть намного проще заставить все работать с помощью web.py
Удачи. В Python практически все, что вы можете себе представить, уже существует в виде библиотеки. Всегда лучше потратить несколько минут на поиск готового решения.
Расскажите нам, чего вы пытаетесь достичь. Вы настраиваете веб-сервер? Хотите проанализировать низкоуровневый сетевой трафик? Начните с формулировки проблемы, которую вы пытаетесь решить.