Need Inputs on Which Extension to Use

Hi all,

I have a working macOS (Intel) system extension app that currently uses only a Content Filter (NEFilterDataProvider). I need to capture/log HTTP and HTTPS traffic in plain text, and I understand NETransparentProxyProvider is the right extension type for that.

For HTTPS I will need TLS inspection / a MITM proxy — I’m new to that and unsure how complex it will be.

For DNS data (in plain text), can I use the same extension, or do I need a separate extension type such as NEPacketTunnelProvider, NEFilterPacketProvider, or NEDNSProxyProvider?

Current architecture:

Two Xcode targets: MainApp and a SystemExtension target.

The SystemExtension target contains multiple network extension types.

MainApp ↔ SystemExtension communicate via a bidirectional NSXPC connection.

I can already enable two extensions (Content Filter and TransparentProxy). With the NETransparentProxy, I still need to implement HTTPS capture.

Questions I’d appreciate help with:

Can NETransparentProxy capture the DNS fields I need (dns_hostname, dns_query_type, dns_response_code, dns_answer_number, etc.), or do I need an additional extension type to capture DNS in plain text?

If a separate extension is required, is it possible or problematic to include that extension type (Packet Tunnel / DNS Proxy / etc.) in the same SystemExtension Xcode target as the TransparentProxy?

Any recommended resources or guidance on TLS inspection / MITM proxy setup for capturing HTTPS logs?

There are multiple DNS transport types — am I correct that capturing DNS over UDP (port 53) is not necessarily sufficient? Which DNS types should I plan to handle?

I’ve read that TransparentProxy and other extension types (e.g., Packet Tunnel) cannot coexist in the same Xcode target. Is that true?

Best approach for delivering logs from multiple extensions to the main app (is it feasible)? Or what’s the best way to capture logs so an external/independent process (or C/C++ daemon) can consume them?

Required data to capture (not limited to):

All HTTP/HTTPS (request, body, URL, response, etc.)

DNS fields: dns_hostname, dns_query_type, dns_response_code, dns_answer_number, and other DNS data — all in plain text.

I’ve read various resources but remain unclear which extension(s) to use and whether multiple extension types can be combined in one Xcode target. Please ask if you need more details.

Thank you.

Need Inputs on Which Extension to Use
 
 
Q