Looking to hire Laravel developers? Try LaraJobs

laravel-http-socks5 maintained by jpcaparas

Description
Extends the Laravel HTTP service to allow for easy SOCKS5 proxying and provides the ability to debug the response.
Author
Last update
2025/01/03 21:18 (dev-main)
License
Links
Downloads
12

Comments
comments powered by Disqus

Laravel HTTP client macro for SOCKS5 proxying

Tests

This package extends the Laravel HTTP service to allow for easy, parameterised SOCKS5 proxying

Installation

You can install the package via composer:

composer require jpcaparas/laravel-http-socks5

Usage

Registering the Service Provider

Add the service provider to your config/app.php:

'providers' => [
    // ...
    JPCaparas\Socks5Proxy\Socks5ProxyServiceProvider::class,
],

Setting up the SOCKS5 Proxy

To use the SOCKS5 proxy, you can utilize the fluent interface:

use Illuminate\Support\Facades\Http;

$response = Http::socks5()
    ->setHost('proxy.example.com')
    ->setPort(1080)
    ->setCredentials('username', 'password')
    ->get('http://example.com');

Method Chaining

You can chain multiple configuration methods:

use Illuminate\Support\Facades\Http;

$client = Http::socks5()
    ->setHost('proxy.example.com')
    ->setCredentials('username', 'password')
    ->withOptions([
        'debug' => true,
        'timeout' => 30
    ]);

$response = $client->post('https://api.example.com/data', [
    'key' => 'value'
]);

Debugging the Response

Enable debugging to see detailed connection information:

use Illuminate\Support\Facades\Http;

$response = Http::socks5()
    ->setHost('proxy.example.com')
    ->setCredentials('username', 'password')
    ->withOptions(['debug' => true])
    ->get('http://example.com');

Tests

composer test

Trying it out

You can experiment with the package using Laravel Tinker. First, run:

composer tinker

Then try this example (outputs detailed connection info):

$client = \Illuminate\Support\Facades\Http::socks5()
   ->setHost('amsterdam.nl.socks.nordhold.net')
   ->setCredentials('username', 'password');

$client->withOptions(['debug' => true])->get('https://www.google.com');

Example output:

* Host amsterdam.nl.socks.nordhold.net:1080 was resolved.
* IPv6: (none)
* IPv4: [REDACTED]
*   Trying [REDACTED]:1080...
* Host www.google.com:443 was resolved.
* IPv6: [REDACTED]
* IPv4: [REDACTED]
* SOCKS5 connect to [REDACTED]:443 (locally resolved)
* SOCKS5 request granted.
* Connected to amsterdam.nl.socks.nordhold.net port 1080
[...]
* SSL connection using TLSv1.3
* Server certificate verified
> GET / HTTP/1.1
Host: www.google.com
[...]
< HTTP/1.1 200 OK
< Date: Fri, 03 Jan 2025 08:14:37 GMT
[...]