Date

2018.01.14

Category

phpプログラミング

Tags

PHPのcurlをtor経由で実行する

PHPで書いたcurlスクリプトをtor経由で実行してみたので忘れないように方法をまとめます。

tor

まずはtorをインストールします

brew install tor

起動します

tor&

ローカルホストの9050番ポートでTorサーバーが建ちます。

試してみる

$ curl -sL ipinfo.io
本当のグローバルIPアドレス

$ curl -sL --socks5 127.0.0.1:9050 ipinfo.io
Torサーバーを経由したグローバルIPアドレス

Torサーバーが建ってる事を確認したら次へ

tor経由でPHPのcurlを実行してみる

とりあえずipinfo.ioにcurlしてみる
gistで見つけたコードをそのまま動かそうとしたら

[warn] Socks version 71 not recognized. (This port is not an HTTP proxy; did you want to use HTTPTunnelPort?)

って言われたので少し修正。オプションが足りてなかったっぽい。

function tor_wrapper($url){
    // Adresse et port du TOR
    $tor = '127.0.0.1:9050';
    // Mettez un TimeOut
    $timeout = '300';
    
    $ack = curl_init();
    curl_setopt($ack, CURLOPT_PROXY, $tor);
    curl_setopt($ack, CURLOPT_URL, $url);
    curl_setopt($ack, CURLOPT_HEADER, 1);
    curl_setopt($ack, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ack, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ack, CURLOPT_TIMEOUT, $timeout);
    // 重要
    curl_setopt($ack, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
    
    $syn = curl_exec($ack);
    // $info = curl_getinfo($ack);
    curl_close($ack);
    // $info['http_code'];
    return $syn;
}

$wrapped = tor_wrapper("http://ipinfo.io");
echo $wrapped;

これで無事IPが変わってたら成功

追記

CURLOPT_PROXYTYPE

CURLPROXY_SOCKS5_HOSTNAME

を設定するとonionドメインにもアクセスできるらしい…

RELATED POSTS

PROFILE

my icon

@reizou05
日本の高校生で趣味は筋トレです。
とある会社でGoを書いたりしています。
WEB系のお仕事をください。

AD