Sample code for 30+ languages & platforms
Zig

HTTP/HTTPS using SOCKS5 Proxy

See more HTTP Examples

Demonstrates how to use HTTP/HTTPS with a SOCKS5 proxy.

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    // This example assumes the Chilkat HTTP API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    const http = try chilkat.Http.init();
    defer http.deinit();

    // Using a SOCKS5 proxy is just a matter of setting a few properties.
    // Once these properties are set, all other coding is the same as when
    // the connection is direct to the HTTP server.

    // Set the SocksVersion property = 5 for SOCKS5
    http.setSocksVersion(5);

    // Set the SocksHostname to the SOCKS proxy domain name or IP address,
    // which may be IPv4 (dotted notation) or IPv6.
    http.setSocksHostname("192.168.1.100");

    // The port where the SOCKS5 proxy is listening.
    http.setSocksPort(1080);

    // If the SOCKS5 proxy itself requires authentication, set the username/password
    // like this.  (otherwise leave the username/password empty)
    http.setSocksUsername("myUsername");
    http.setSocksPassword("myPassword");

    // Now do whatever it is you need to do.  All communications will go through the proxy.
    const html = http.quickGetStr(alloc, "https://www.google.com/") catch {
        std.debug.print("{s}\n", .{try http.getLastErrorText(alloc)});
        return;
    };

    std.debug.print("{s}\n", .{html});
    std.debug.print("----\n", .{});
    std.debug.print("Success!\n", .{});
}