Laravel 中使用 Socks5 代理
准备⌗
- shadowsocks-libev
- Laravel 项目
- Guzzle
shadowsocks-libev 的相关内容我回另外发布一片博文来说明,敬请期待。
Laravel⌗
Laravel 7.*⌗
如果你是 Laravel 7.* 的版本的话,内部已经封装了 Guzzle,可以使用如下方式来实现:
use Illuminate\Support\Facades\Http;
$response = Http::withOptions([
'proxy' => 'socks5h://127.0.0.1:1080',
'timeout' => 30
])->get('ip.sb');
return $response->body();
通过
withOptions
方法来设置请求的代理,但是需要注意的是 proxy 的协议,socks5 和 socks5h 的区别是,socks5 会用本地的 DNS 解析来获取域名的 IP,会导致获取到错误的服务器 IP,所以建议使用 socks5h。
Laravel 7 之前的版本⌗
composer require guzzlehttp/guzzle
use GuzzleHttp\Client;
$client = new Client();
$response = $client->get('ip.sb', [
'proxy' => 'socks5h://127.0.0.1:1080',
'timeout' => 30
]);
return $response->getBody()->getContents();
如果不出意外的话,响应中的内容就是你 Socks5 公网节点的IP。
I hope this is helpful, Happy hacking…