22

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

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

$proxy = "cagsan:jw22wdw@108.61.25.223: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);
4

3 に答える 3

48

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

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

ドキュメントから:

CURLOPT_PROXYTYPE

CURLPROXY_HTTP (デフォルト) または CURLPROXY_SOCKS5 のいずれか。

于 2012-11-18T21:26:49.500 に答える
29

CURLOPT_PROXYcURL 7.21.7 以降では、SOCKS プロトコルを使用および指定できます。

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

詳細については、libcurl のドキュメントを参照してください。

于 2014-05-28T20:39:22.837 に答える
3

ホスト名 (localhost?) 経由で接続しようとしていて、 で動作しないCURLPROXY_SOCKS5場合は、 を試すことができますCURLPROXY_SOCKS5_HOSTNAME

curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);

一部の以前の PHP バージョンでは、次のことを行う必要があります。

curl_setopt($ch, CURLOPT_PROXYTYPE, 7);
于 2015-09-11T01:55:41.003 に答える