web-dev-qa-db-ja.com

SOCKS 5プロキシをcURLで使用する方法は?

通常のプロキシ(例:72.41.132.22:3128)cURLでうまく動作しますが、ユーザー名/パスでSOCKS 5プロキシを使用すると、ページ上に「[1」が表示されます。

SOCKY 5プロキシをcURLで使用する方法はありますか?

$proxy = "cagsan:[email protected]:34792";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 1);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);
17
user198989

プロキシがSOCKS5プロキシであることをcURLに伝える必要があります。そうでない場合、cURLはHTTPプロキシであると想定します。

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

docs から:

CURLOPT_PROXYTYPE

CURLPROXY_HTTP(デフォルト)またはCURLPROXY_SOCKS5。

36
Kelvin

cURL 7.21.7以降では、CURLOPT_PROXYおよびSOCKSプロトコルを指定します。

curl_setopt($ch, CURLOPT_PROXY, 'socks5://bob:marley@localhost:12345');

libcurl documentation の詳細情報。

18
GiDo

ホスト名(localhost?)を介して接続しようとしている場合、CURLPROXY_SOCKS5、 あなたが試すことができます CURLPROXY_SOCKS5_HOSTNAME

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);

以前のいくつかのPHP=バージョンでは、以下を行う必要があります。

curl_setopt($ch, CURLOPT_PROXYTYPE, 7);
1
iautomation