Самый простой способ сделать это - это то, что вы описываете: настроить браузер для работы через прокси, а затем реализовать его, добавляя / изменяя заголовки по мере необходимости.
Ваша идея о добавлении заголовков HTTP к исходящим "пакетам" неверна. Потому что вы забыли, что протокол HTTP основан на TCP, который является stream . То есть вы не должны выполнять какую-либо независимую обработку для отдельных пакетов. Они должны быть сделаны в контексте связи.
(Кроме того, очевидно, что вы хотите сделать это только для протокола HTTP).
На самом деле есть способы сделать это с помощью "сниффинга", что, как кажется, браузеру. Это, однако, очень, очень сложнее в реализации.
Потому что:
- Требуется разработка драйвера (со всеми вытекающими последствиями)
- Поскольку в вашем конкретном случае вы не можете сделать это для отдельных пакетов - это еще сложнее.
Так что, если у вас есть возможность сказать своему браузеру, чтобы он попал прямо в ваши руки, не углубляясь во внутренности ОС - вам обязательно следует использовать эту возможность.