SOCKS Protocol Architecture
This document provides a comprehensive exploration of SOCKS (SOCKet Secure), widely considered the gold standard for privacy-conscious network automation and secure proxying. While HTTP proxies dominate corporate environments, SOCKS proxies are favored by security professionals, privacy advocates, and advanced automation engineers for their protocol-agnostic nature, reduced trust requirements, and superior security model.
Operating at Layer 5 (Session Layer) of the OSI model (below HTTP but above transport), SOCKS proxies offer capabilities that HTTP proxies fundamentally cannot: UDP tunneling, protocol flexibility, end-to-end encryption preservation, and true DNS privacy. Understanding SOCKS architecture is essential for building undetectable, high-performance browser automation systems.
Module Navigation
- ← HTTP/HTTPS Proxies - Application-layer proxying limitations
- ← Network Fundamentals - TCP/IP, UDP, OSI model foundations
- ← Network & Security Overview - Module introduction and learning path
- → Proxy Detection - Anonymity levels and detection evasion
- → Building Proxies - Full SOCKS5 implementation from scratch
For practical Pydoll configuration, see Proxy Configuration.
Why SOCKS5 is Superior for Automation
SOCKS5 operates below the application layer (Layer 5 vs HTTP's Layer 7). This positioning means:
- Cannot read HTTP traffic: Only sees destination IPs and ports, not URLs/headers
- Protocol-agnostic: Proxies HTTP, FTP, SSH, WebSocket, custom protocols
- Preserves end-to-end TLS: No MITM possibility (unlike HTTP proxies)
- Remote DNS resolution: Prevents DNS leaks to your ISP
- UDP support: Critical for WebRTC, DNS, VoIP, gaming protocols
This dramatically reduces the trust surface area compared to HTTP proxies. You only trust the proxy to forward packets correctly, not to handle sensitive application data.
Introduction: The Session-Layer Proxy
SOCKS (SOCKet Secure) represents a fundamentally different approach to proxying compared to HTTP proxies. While HTTP proxies are application-aware (understanding HTTP semantics, headers, methods), SOCKS proxies are transport-aware (understanding only TCP/UDP connections, IPs, and ports).
Historical Context:
SOCKS was developed in the early 1990s by David Koblas and Michelle Koblas at MIPS Computer Systems to enable hosts inside a firewall to gain full access to the Internet without requiring direct IP connectivity. The original motivation was simple: corporate firewalls blocked outbound connections, but employees needed access to external resources. SOCKS provided a solution by establishing a single controlled gateway through the firewall.
Evolution Timeline:
- 1992: SOCKS4 introduced (informal specification, no RFC)
- 1996: SOCKS5 standardized as RFC 1928 by IETF
- 1996: Username/Password authentication standardized as RFC 1929
- 2003: GSS-API authentication extension (RFC 1961)
- 2020s: Modern extensions (Tor SOCKS extensions, SOCKS6 proposals)
Why "SOCKet Secure"?
Despite the name, SOCKS itself provides no encryption. "Secure" refers to its ability to traverse firewalls securely (from an access control perspective), not cryptographic security. For encryption, you must layer TLS/SSL on top of SOCKS, or use it within an encrypted tunnel (SSH, VPN).
SOCKS Does NOT Encrypt
A common misconception: SOCKS ≠ Encryption. SOCKS is a proxying protocol, not an encryption protocol. It forwards packets transparently without modification, including unencrypted HTTP traffic.
For secure communication, combine SOCKS with:
- TLS/HTTPS for web traffic
- SSH for tunnel encryption
- VPN for full traffic encryption
The security advantage of SOCKS is architectural (less trust required), not cryptographic.
Why Layer 5 Matters: Session vs Application
The key to understanding SOCKS is understanding where it operates in the network stack:
┌─────────────────────────────────────────────┐
│ Layer 7: Application (HTTP, FTP, SMTP) │ ← HTTP Proxies operate here
│ • Full protocol visibility │ (can read URLs, headers)
│ • Can modify requests/responses │
│ • Protocol-specific (HTTP only) │
├─────────────────────────────────────────────┤
│ Layer 6: Presentation (TLS, encryption) │
├─────────────────────────────────────────────┤
│ Layer 5: Session (SOCKS) │ ← SOCKS Proxies operate here
│ • Only sees destination IP:port │ (protocol-agnostic)
│ • Cannot inspect application data │
│ • Works with any Layer 7 protocol │
├─────────────────────────────────────────────┤
│ Layer 4: Transport (TCP, UDP) │
│ • Connection management │
│ • Port numbers, flow control │
├─────────────────────────────────────────────┤
│ Layer 3: Network (IP) │
│ • Routing, IP addresses │
├─────────────────────────────────────────────┤
│ Layer 2: Data Link (Ethernet, WiFi) │
├─────────────────────────────────────────────┤
│ Layer 1: Physical (cables, signals) │
└─────────────────────────────────────────────┘
Practical Implication:
When you use an HTTP proxy:
GET http://example.com/secret-api?token=abc123 HTTP/1.1
Cookie: session=sensitive_data
Authorization: Bearer secret_token
HTTP proxy sees everything - URL, query parameters, cookies, authorization headers.
When you use a SOCKS5 proxy:
# SOCKS5 handshake (simplified)
CONNECT example.com:443 # Only sees: destination host and port
[Encrypted TLS data] # Cannot see URL, headers, or content
SOCKS5 sees only: example.com, port 443, and data volume. The HTTP request inside the TLS tunnel is completely opaque to the proxy.
The Security Difference
With HTTP proxies, you must trust the proxy operator not to:
- Log your browsing history (full URLs)
- Steal authentication tokens/cookies
- Modify responses (inject malware, ads)
- Perform MITM attacks on HTTPS (via CA certificate)
With SOCKS5, you only trust the proxy to:
- Forward packets correctly
- Not log connection metadata (IP, port, timing)
The attack surface is dramatically smaller.
SOCKS4 vs SOCKS5
| Feature | SOCKS4 | SOCKS5 |
|---|---|---|
| RFC | No official RFC (de facto standard from 1990s) | RFC 1928 (official standard, 1996) |
| Authentication | None (user ID only) | Multiple methods (no auth, username/password, GSSAPI) |
| IP Version | IPv4 only | IPv4 and IPv6 |
| UDP Support | No | Yes |
| DNS Resolution | Client-side | Server-side (more anonymous) |
| Protocol Support | TCP only | TCP and UDP |
SOCKS4 History
SOCKS4 was developed by NEC in the early 1990s as a de facto standard without formal RFC documentation. SOCKS5 (RFC 1928) was later standardized by IETF in 1996 to address SOCKS4's limitations.
Always Use SOCKS5
SOCKS5 is superior in every way. SOCKS4 is legacy and should only be used if the proxy doesn't support SOCKS5.
SOCKS5 Handshake Protocol
The SOCKS5 connection process follows RFC 1928:
sequenceDiagram
participant Client
participant SOCKS5 as SOCKS5 Proxy
participant Server as Target Server
Note over Client,SOCKS5: Phase 1: Method Negotiation
Client->>SOCKS5: 1. Hello<br/>[VER=5, NMETHODS, METHODS]
SOCKS5->>Client: 2. Method Selected<br/>[VER=5, METHOD]
Note over Client,SOCKS5: Phase 2: Authentication (if needed)
Client->>SOCKS5: 3. Auth Request<br/>[VER=1, ULEN, UNAME, PLEN, PASSWD]
SOCKS5->>Client: 4. Auth Response<br/>[VER=1, STATUS]
Note over Client,SOCKS5: Phase 3: Connection Request
Client->>SOCKS5: 5. Connect Request<br/>[VER=5, CMD, DST.ADDR, DST.PORT]
SOCKS5->>Server: 6. Establish TCP Connection
Server-->>SOCKS5: Connection Established
SOCKS5->>Client: 7. Connect Reply<br/>[VER=5, REP, BND.ADDR, BND.PORT]
Note over Client,Server: Data transfer (proxied)
Client->>SOCKS5: Application Data
SOCKS5->>Server: Forward Data
Server->>SOCKS5: Response Data
SOCKS5->>Client: Forward Response
SOCKS5 Packet Structures
1. Client Hello
# Byte layout
[
0x05, # VER: Protocol version (5)
0x02, # NMETHODS: Number of authentication methods
0x00, 0x02 # METHODS: No auth (0x00) and Username/Password (0x02)
]
2. Server Method Selection
Method codes:
- 0x00: No authentication required
- 0x01: GSSAPI
- 0x02: Username/Password
- 0xFF: No acceptable methods
3. Authentication (Username/Password)
# Client authentication request
[
0x01, # VER: Subnegotiation version (1)
len(username), # ULEN: Username length
*username_bytes, # UNAME: Username
len(password), # PLEN: Password length
*password_bytes # PASSWD: Password
]
# Server authentication response
[
0x01, # VER: Subnegotiation version (1)
0x00 # STATUS: 0 = success, non-zero = failure
]
4. Connection Request
[
0x05, # VER: Protocol version (5)
0x01, # CMD: Command (1=CONNECT, 2=BIND, 3=UDP ASSOCIATE)
0x00, # RSV: Reserved
0x03, # ATYP: Address type (1=IPv4, 3=Domain, 4=IPv6)
len(domain), # Domain length
*domain_bytes, # Domain name
*port_bytes # Port (2 bytes, big-endian)
]
5. Connection Reply
[
0x05, # VER: Protocol version (5)
0x00, # REP: Reply (0=success, see error codes below)
0x00, # RSV: Reserved
0x01, # ATYP: Address type
*bind_addr, # BND.ADDR: Bound address
*bind_port # BND.PORT: Bound port (2 bytes)
]
Reply codes:
0x00: Succeeded0x01: General SOCKS server failure0x02: Connection not allowed by ruleset0x03: Network unreachable0x04: Host unreachable0x05: Connection refused0x06: TTL expired0x07: Command not supported0x08: Address type not supported
SOCKS5 Efficiency
SOCKS5 is binary protocol (not text-based like HTTP). This makes it:
- More efficient (smaller packets)
- Faster to parse
- Less human-readable (requires hex dumping to debug)
SOCKS5 UDP Support
One of SOCKS5's unique features is UDP support via the UDP ASSOCIATE command:
sequenceDiagram
participant Client
participant SOCKS5
participant UDP_Server as UDP Server
Note over Client,SOCKS5: Establish TCP control connection
Client->>SOCKS5: TCP: CONNECT (authentication)
Client->>SOCKS5: TCP: UDP ASSOCIATE request
SOCKS5->>Client: TCP: Relay address and port
Note over Client,SOCKS5: UDP data transfer
Client->>SOCKS5: UDP: Datagram to relay
SOCKS5->>UDP_Server: UDP: Forward datagram
UDP_Server->>SOCKS5: UDP: Response datagram
SOCKS5->>Client: UDP: Forward response
Note over Client,SOCKS5: TCP control connection stays open
UDP packet format:
[
0x00, 0x00, # RSV: Reserved
0x00, # FRAG: Fragment number
0x01, # ATYP: Address type
*dst_addr, # DST.ADDR: Destination address
*dst_port, # DST.PORT: Destination port
*data # DATA: User data
]
UDP Limitations
UDP ASSOCIATE requires:
- A persistent TCP control connection
- Client and server to maintain state
- Additional relay infrastructure
Many proxies don't support UDP, and those that do often have restrictions or additional costs.
Modern UDP Proxying Alternatives
For full UDP support in modern setups, consider these alternatives:
- Shadowsocks: Modern SOCKS5-like protocol designed for UDP/TCP proxying with encryption
- WireGuard: VPN protocol with native UDP support and excellent performance
- V2Ray/VMess: Flexible proxy protocol with comprehensive UDP handling
- Trojan: Lightweight protocol that mimics HTTPS traffic while supporting UDP
These protocols are particularly useful for gaming, VoIP, or video streaming where UDP performance is critical.
Why SOCKS5 is More Secure
Now that we've built the foundation, let's analyze why SOCKS5 is generally considered more secure than HTTP/HTTPS proxies.
Protocol-Level Comparison
HTTP Proxy (Layer 7):
graph LR
A1[Client Application] --> A2[HTTP Library]
A2 --> A3[Proxy intercepts HTTP requests]
A3 --> A4[Proxy can read Headers, Cookies, Methods, URLs]
SOCKS5 Proxy (Layer 5):
graph LR
B1[Client Application] --> B2[Any Protocol]
B2 --> B3[TCP/UDP Transport]
B3 --> B4[SOCKS5 sees only: Destination IP, Port, Packet size]
Security Advantages of SOCKS5
| Aspect | HTTP/HTTPS Proxy | SOCKS5 Proxy |
|---|---|---|
| Data Visibility | Can read HTTP headers, URLs, cookies (HTTP) | Only sees destination IP/port and packet sizes |
| Protocol Support | HTTP/HTTPS only | Any TCP/UDP protocol |
| TLS Inspection | Possible with MITM certificates | Not possible (operates below TLS) |
| DNS Leaks | Client resolves DNS (leaks) | Proxy resolves DNS (no leak) |
| Application Awareness | Understands HTTP | Protocol-agnostic |
| Fingerprinting | Can inject headers, modify requests | Transparent packet forwarding |
| UDP Support | None | Yes (for WebRTC, DNS, etc.) |
DNS Resolution: A Critical Difference
HTTP Proxy DNS behavior:
sequenceDiagram
participant Client
participant DNS
participant Proxy
participant Server
Note over Client: Client resolves DNS<br/>(uses system DNS)
Client->>DNS: DNS Query: example.com?
DNS->>Client: DNS Response: 93.184.216.34
Note over Client: DNS leak: ISP sees query
Client->>Proxy: Connect to 93.184.216.34
Proxy->>Server: Forward to 93.184.216.34
SOCKS5 DNS behavior:
sequenceDiagram
participant Client
participant SOCKS5
participant DNS
participant Server
Note over Client: Client sends domain name<br/>(not IP) to SOCKS5
Client->>SOCKS5: CONNECT example.com:443<br/>(ATYP=0x03, domain name)
Note over SOCKS5: Proxy resolves DNS<br/>(using its own DNS)
SOCKS5->>DNS: DNS Query: example.com?
DNS->>SOCKS5: DNS Response: 93.184.216.34
Note over SOCKS5: No DNS leak to client ISP
SOCKS5->>Server: Connect to 93.184.216.34
Remote DNS Resolution
SOCKS5's ability to perform DNS resolution at the proxy server is crucial for privacy. Your ISP never sees which websites you're querying, only that you're connected to the proxy.
Man-in-the-Middle (MITM) Resistance
HTTP Proxies are vulnerable to MITM:
sequenceDiagram
participant Client
participant Malicious_Proxy as Malicious HTTP Proxy
participant Server
Client->>Malicious_Proxy: HTTPS request (encrypted)
Note over Malicious_Proxy: Proxy terminates TLS<br/>(using fake certificate)
Malicious_Proxy->>Malicious_Proxy: Reads/modifies content
Malicious_Proxy->>Server: Re-encrypt with real certificate
Server->>Malicious_Proxy: Response
Malicious_Proxy->>Client: Modified response
Note over Client: May show certificate warning
SOCKS5 cannot perform MITM:
sequenceDiagram
participant Client
participant SOCKS5
participant Server
Client->>SOCKS5: CONNECT server.com:443
SOCKS5->>Server: TCP connection established
SOCKS5->>Client: Connection ready
Note over Client,Server: End-to-end TLS tunnel
Client->>Server: TLS Handshake + Encrypted Data
Note over SOCKS5: Cannot decrypt<br/>Cannot modify<br/>Only forwards packets
Server->>Client: Encrypted Response
Trust Model
- HTTP Proxy: You trust it with cleartext HTTP data and to properly tunnel HTTPS
- SOCKS5 Proxy: You only trust it to forward packets correctly
SOCKS5 has a smaller trust surface area.
Summary and Key Takeaways
SOCKS5 represents the gold standard for privacy-conscious proxying, offering protocol flexibility, reduced trust requirements, and superior security compared to application-layer alternatives. Understanding SOCKS architecture is essential for building robust, undetectable automation systems.
Core Concepts Covered
1. Session-Layer Operation:
- SOCKS operates at Layer 5 (Session Layer), below HTTP but above TCP/UDP
- Protocol-agnostic: Works with any application protocol (HTTP, FTP, SSH, WebSocket, custom)
- Blind forwarding: Only sees destination IP and port, not application data
2. SOCKS5 Protocol Features:
- Authentication: Multiple methods (no auth, username/password, GSSAPI)
- IP Version Support: Both IPv4 and IPv6
- TCP and UDP: Full support for connectionless protocols
- Remote DNS Resolution: Prevents DNS leaks to client ISP
- Binary Protocol: Efficient, low-overhead packet structures
3. Security Model:
- Cannot inspect application data: Operates below TLS encryption
- MITM-resistant: Cannot terminate TLS connections (unlike HTTP proxies)
- Reduced trust surface: Only trust proxy to forward packets, not handle sensitive data
- DNS privacy: Proxy resolves domains, hiding queries from ISP
4. UDP Support:
- Unique SOCKS5 feature enabling WebRTC, DNS-over-UDP, VoIP, gaming
- Requires persistent TCP control connection + UDP relay
- Many proxies don't support UDP (additional infrastructure required)
5. SOCKS4 vs SOCKS5:
- SOCKS4: Legacy, TCP-only, no authentication, IPv4-only
- SOCKS5: Modern standard (RFC 1928), UDP support, flexible authentication, IPv4/IPv6
SOCKS5 vs HTTP Proxy: Decision Matrix
| Requirement | SOCKS5 | HTTP Proxy |
|---|---|---|
| Privacy | Excellent (blind forwarding) | Poor (sees all HTTP traffic) |
| Protocol Flexibility | Any TCP/UDP | HTTP/HTTPS only |
| DNS Privacy | Remote resolution | Client-side leak |
| UDP Support | Yes | No |
| TLS Inspection | Impossible (secure) | Possible (MITM risk) |
| Stealth | High (transparent) | Low (header injection) |
| Setup Complexity | Moderate | Simple |
| Content Filtering | No (blind) | Yes (application-aware) |
| Caching | No | Yes |
| Corporate Environments | Rare | Common |
General Recommendation: - Privacy/Automation: SOCKS5 (stealth, protocol flexibility, security) - Corporate/Filtering: HTTP proxy (content control, caching, policy enforcement) - Maximum Security: SOCKS5 over SSH tunnel or VPN
When to Use SOCKS5
Ideal Use Cases:
- Browser automation requiring stealth and protocol flexibility
- Privacy-critical applications (journalist tools, VPNs, Tor)
- Multi-protocol applications (FTP, SSH, WebSocket, custom protocols)
- WebRTC applications (video conferencing, gaming, real-time communication)
- DNS privacy (hiding browsing patterns from ISP)
- Bypassing deep packet inspection (DPI) in restrictive networks
Poor Use Cases:
- Corporate content filtering (use HTTP proxy with URL-based policies)
- HTTP caching for bandwidth optimization (use HTTP proxy or CDN)
- Simple HTTP-only scraping where stealth isn't critical
Practical Pydoll Configuration
Basic SOCKS5 Proxy:
from pydoll import Chrome, ChromiumOptions
options = ChromiumOptions()
options.set_proxy({
'server': 'socks5://proxy.example.com:1080',
'username': 'user', # Optional
'password': 'pass' # Optional
})
async with Chrome(options=options) as browser:
tab = await browser.start()
await tab.go_to('https://example.com')
SOCKS5 with Authentication (via Pydoll): Pydoll automatically handles SOCKS5 username/password authentication through Chrome's Fetch domain. No manual implementation needed.
Testing SOCKS5 Proxy:
import socket
import socks
# Manual SOCKS5 test (without Pydoll)
socks.set_default_proxy(socks.SOCKS5, "proxy.example.com", 1080,
username="user", password="pass")
socket.socket = socks.socksocket
# Now all socket connections use SOCKS5
SOCKS5 Best Practices
Use SOCKS5, not SOCKS4 (better security, UDP support)
Enable remote DNS resolution (prevent DNS leaks)
Use authentication (username/password or GSSAPI)
Test for WebRTC leaks (even with SOCKS5, WebRTC can leak real IP)
Combine with TLS (SOCKS provides proxying, not encryption)
Don't assume SOCKS5 = encryption (layer TLS on top)
Don't use SOCKS4 (legacy, security limitations)
Don't rely on UDP support (many proxies don't support it)
Further Reading and References
Related Documentation
Within This Module:
- HTTP/HTTPS Proxies - Application-layer proxying comparison
- Network Fundamentals - TCP/IP, UDP, OSI model foundations
- Proxy Detection - How SOCKS5 proxies can still be detected
- Building Proxies - Full SOCKS5 server implementation from scratch
Practical Usage:
- Proxy Configuration (Features) - Configuring SOCKS5 in Pydoll
- Browser Options - Chrome flags for proxy optimization
Deep Dives:
- Network Fingerprinting - TCP/IP characteristics that leak through SOCKS5
- Browser Fingerprinting - Application-level detection despite SOCKS5
- Evasion Techniques - How to maximize SOCKS5 stealth
External References
RFCs (Official Specifications):
- RFC 1928 - SOCKS Protocol Version 5 (March 1996)
- https://datatracker.ietf.org/doc/html/rfc1928
- The official SOCKS5 specification
- RFC 1929 - Username/Password Authentication for SOCKS V5 (March 1996)
- https://datatracker.ietf.org/doc/html/rfc1929
- Standard authentication mechanism
- RFC 1961 - GSS-API Authentication Method for SOCKS Version 5 (June 1996)
- https://datatracker.ietf.org/doc/html/rfc1961
- Enterprise authentication (Kerberos)
- RFC 3089 - A SOCKS-based IPv6/IPv4 Gateway Mechanism (April 2001)
- https://datatracker.ietf.org/doc/html/rfc3089
- IPv4/IPv6 interoperability
SOCKS4 (Informal Specification):
- SOCKS4 Protocol: http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol
- SOCKS4A Extension: http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4A.protocol
- Domain name resolution extension
Technical Articles and Guides:
- Understanding SOCKS5: https://securitytrails.com/blog/socks5-proxy
- SOCKS5 vs HTTP Proxies: https://www.varonis.com/blog/socks-proxy-primer
- Building a SOCKS5 Server: Various implementations on GitHub (see build-proxy.md)
SOCKS Implementations:
- Dante: https://www.inet.no/dante/ (Production SOCKS server)
- ss5: http://ss5.sourceforge.net/ (SOCKS4/SOCKS5 server)
- PySocks: https://github.com/Anorov/PySocks (Python SOCKS client)
- go-socks5: https://github.com/armon/go-socks5 (Go SOCKS5 library)
Modern SOCKS-like Protocols:
- Shadowsocks: https://shadowsocks.org/ (Encrypted SOCKS5-like protocol)
- WireGuard: https://www.wireguard.com/ (VPN with SOCKS-like simplicity)
- V2Ray/VMess: https://www.v2ray.com/ (Flexible proxy framework)
- Trojan: https://trojan-gfw.github.io/trojan/ (HTTPS-mimicking proxy)
Testing Tools:
- curl with SOCKS5:
- proxychains: Force any application through SOCKS5
- Wireshark: Packet analysis to verify SOCKS5 handshake
Security and Privacy:
- DNS Leak Testing: https://dnsleaktest.com/
- WebRTC Leak Testing: https://browserleaks.com/webrtc
- IP Detection: https://ipleak.net/
Advanced Topics (Beyond This Document)
SOCKS Extensions:
- Tor SOCKS Extensions: Tor-specific SOCKS5 extensions for circuit isolation
- SOCKS6 Proposals: Next-generation SOCKS protocol (draft stage)
- SOCKS over TLS: Encrypted SOCKS channels
Performance Optimization:
- Connection Pooling: Reusing SOCKS5 connections
- Multiplexing: Multiple streams over single SOCKS connection
- UDP Performance: Optimizing SOCKS5 UDP relay
Enterprise Deployments:
- LDAP Integration: Enterprise user authentication
- Load Balancing: Distributing traffic across SOCKS5 proxies
- High Availability: Failover and redundancy strategies
Protocol Comparison:
- SOCKS vs VPN: When to use each
- SOCKS vs SSH Tunneling: Tunneling vs proxying
- SOCKS vs Tor: Anonymity vs performance tradeoffs
Final Thoughts
SOCKS5 is the preferred proxy protocol for privacy-conscious browser automation, offering fundamental architectural advantages over HTTP proxies:
- Protocol flexibility enables proxying any TCP/UDP application
- Session-layer operation prevents application data inspection
- Remote DNS resolution protects browsing patterns
- MITM resistance preserves end-to-end TLS encryption
While HTTP proxies dominate corporate environments due to content filtering capabilities, SOCKS5 is the superior choice for automation requiring stealth, security, and protocol flexibility.
Key Takeaway: Use SOCKS5 for privacy and automation, HTTP proxies for corporate filtering.
Next Steps:
- Read Proxy Detection to understand how even SOCKS5 can be detected
- Learn Building Proxies to implement your own SOCKS5 server
- Configure SOCKS5 in Pydoll using Proxy Configuration