PHPのcurl_execの問題についてアドバイスをお願いします

WBOY
リリース: 2016-06-23 13:53:07
オリジナル
1115 人が閲覧しました

あるネットワークディスクの rar 形式の圧縮パッケージの外部リンクには、ホットリンクを検出するためのリファラーが含まれています。それをブログに載せて人々にダウンロードしてもらいたかったので、リファラーを偽造するために PHP を学習しましたが、結果は次のような文字列でした。圧縮されたパッケージが文字化けしていると思われます。 初心者なので、元のリンクを開いてダウンロードする方法についてアドバイスをお願いします。ディスカッションへの返信 (解決策)

これらを取得しました。結果は rar 形式で保存されています。開くことができれば、内容は正しいことを意味します。この場合、ヘッダー情報を出力するだけです:

<?php$url = '某个连接地址url.rar格式';$ch = curl_init(); //初始化curl_setopt($ch, CURLOPT_URL, $url); //你要访问的页面curl_setopt($ch, CURLOPT_REFERER, '某个来路url'); //伪造来路页面curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $content = curl_exec($ch); //执行curl_close($ch); //关闭echo $content;?>
ログイン後にコピー

今書いた内容に何か問題があるかもしれません。うまくいかない場合は、この書き方をもう一度試してください
header("Content-type: application/octet-stream");Header("Content-Disposition: attachment; filename=download.rar" );
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これらの結果を保存します。 rar 形式で、開くことができれば、内容が正しいことを意味します。この場合、ヘッダー情報を出力するだけで済みます:

header ( 'Content-type: application/rar' );header ( 'Content-Disposition: attachment; filename="downloaded.rar"' );
ログイン後にコピー


これでダウンロードして開くことができます。ありがとうございます!

しかし、元のRARのファイル名は変更されています。たとえば、元のダウンロードアドレスのRAR名は「ebook.rar」ですが、ダウンロードしたものはdownload.rarとして保存する方法はありますか。名前?



これらの結果を rar 形式で保存できる場合は、内容が正しいことを意味します。この場合、ヘッダー情報を出力するだけで済みます:
header("Content-type: application/octet-stream");Header("Content-Disposition: attachment; filename=download.rar" );
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これでダウンロードして開くことができます。ありがとうございます!

しかし、元のRARのファイル名は変更されています。たとえば、元のダウンロードアドレスのRAR名は「ebook.rar」ですが、ダウンロードしたものはdownload.rarとして保存する方法はありますか。名前?


これには、ダウンロード アドレス間の関係を自分で分析する必要があります





これらの結果を rar 形式で保存できれば、内容が正しいことを意味します。この場合、ヘッダー情報を出力するだけで済みます:

header("Content-type: application/octet-stream");Header("Content-Disposition: attachment; filename=download.rar" );
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これでダウンロードして開くことができます、ありがとうございます!
しかし、元のRARのファイル名は変更されています。たとえば、元のダウンロードアドレスのRAR名は「ebook.rar」ですが、ダウンロードしたものはdownload.rarとして保存する方法はありますか。名前?


これには、ダウンロード アドレス間の関係を自分で分析する必要があります



こんにちは、私は php についてあまり詳しくないので、私の方法が間違っているかもしれません。オリジンを偽造して、元のrarアドレスを直接開く方法はありますか?



これらの結果を rar 形式で保存できる場合は、内容が正しいことを意味します。この場合、ヘッダー情報を出力するだけで済みます:
header("Content-type: application/octet-stream");Header("Content-Disposition: attachment; filename=download.rar" );
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これでダウンロードして開くことができます。ありがとうございます!

しかし、元のRARのファイル名は変更されています。たとえば、元のダウンロードアドレスのRAR名は「ebook.rar」ですが、ダウンロードしたものはdownload.rarとして保存する方法はありますか。名前?


対応する場所から元の名前を取得して、ここに書くことができます。

$url = '特定の接続アドレス url.rar 形式'
この URL はあなた自身がそのファイル名を知らない場合、他の人はどうやってそれを知ることができますか? 知っている場合は、単に置き換えるだけです。 download.rar

$url = '特定の接続アドレスurl.rar形式';

ここのURLにファイル名があればそのまま解凍して使用できます。

$url = '特定の接続アドレス url.rar 形式'
この URL はあなた自身がそのファイル名を知らない場合、他の人はどうやって知ることができますか? ダウンロードを置き換えるだけです。 .rar

その rar のダウンロード リンクは動的アドレスです。クリックした後、ダウンロードは download.rar になり、ダウンロード プロセスで不明なサイズが表示されました。これが私の考え方だと思います。何か良いアイデアはありますか? オリジンを偽造しただけですが、元のダウンロード リンクを直接開きたいのですが、

header("Content-type: application/octet-stream");Header("Content-Disposition: attachment; filename=download.rar" );
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
で十分ではないでしょうか?

まあ、それはうまくいきません、ヘッダーがテキストになってしまいます。こうなるはずです

相手がダウンロードを提供してくれるので、ファイル名やファイル長などの関連情報も当然提供されています

$url = '某个连接地址url.rar格式';$ch = curl_init(); //初始化curl_setopt($ch, CURLOPT_URL, $url); //你要访问的页面curl_setopt($ch, CURLOPT_REFERER, '某个来路url'); //伪造来路页面curl_setopt($ch, CURLOPT_HEADER, 1); curl_exec($ch); //执行
ログイン後にコピー



本当は
$url = '/某个连接地址url.rar格式';$ch = curl_init(); //初始化curl_setopt($ch, CURLOPT_URL, $url); //你要访问的页面curl_setopt($ch, CURLOPT_REFERER, '某个来路url'); //伪造来路页面curl_setopt($ch, CURLOPT_HEADER, 1); //要读回 http 头curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'func'); //监听返回的数据curl_exec($ch); //执行function func($ch, $str) {  static $s = '@';  if($s) {    $s = trim($str);    if($s) header($s); //如果是头信息,则发送相应的头  }else echo $str; //否则发送数据  return strlen($str);}
ログイン後にコピー
で十分ではないでしょうか?

ボス、出力はテキスト形式のようで、文字化けがたくさん含まれています

はい、#11 で修正しませんでしたか?

私はあなたより早くそれに気づきました、明らかに私は自分自身に対してより責任があります

はい、#11で修正しましたよね?
あなたよりも早く発見しました、明らかに私の方が自分自身に責任があります



360 と Google Chrome では問題なく動作します。
より高いバージョンの IE ブラウザでクリックしてダウンロードすると、ファイル名とサフィックス拡張子が文字化けします。ダウンロードはできるのですが、ファイルの種類が表示されません。文字化けの原因は何ですか? 中国語のファイル名が文字化けするのは普通のことです

サーバーが gbk または utf-8 でエンコードされている可能性があります
クライアントも文字化けする可能性がありますgbk または utf-8 でエンコードされている必要があります
Content-Disposition:attachment;filename=download.rar のようなヘッダー情報を取得したら、中国語のファイル名を判断し、必要に応じてクライアントの文字セットに従ってトランスコードする必要があります

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!