あるネットワークディスクの 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"' );
これでダウンロードして開くことができます。ありがとうございます!
header("Content-type: application/octet-stream");Header("Content-Disposition: attachment; filename=download.rar" );
これでダウンロードして開くことができます。ありがとうございます!
しかし、元のRARのファイル名は変更されています。たとえば、元のダウンロードアドレスのRAR名は「ebook.rar」ですが、ダウンロードしたものはdownload.rarとして保存する方法はありますか。名前?
これには、ダウンロード アドレス間の関係を自分で分析する必要があります
header("Content-type: application/octet-stream");Header("Content-Disposition: attachment; filename=download.rar" );
これでダウンロードして開くことができます、ありがとうございます!
しかし、元のRARのファイル名は変更されています。たとえば、元のダウンロードアドレスのRAR名は「ebook.rar」ですが、ダウンロードしたものはdownload.rarとして保存する方法はありますか。名前?
これには、ダウンロード アドレス間の関係を自分で分析する必要があります
header("Content-type: application/octet-stream");Header("Content-Disposition: attachment; filename=download.rar" );
これでダウンロードして開くことができます。ありがとうございます!
しかし、元のRARのファイル名は変更されています。たとえば、元のダウンロードアドレスのRAR名は「ebook.rar」ですが、ダウンロードしたものはdownload.rarとして保存する方法はありますか。名前?
対応する場所から元の名前を取得して、ここに書くことができます。
$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で修正しましたよね?
あなたよりも早く発見しました、明らかに私の方が自分自身に責任があります
サーバーが gbk または utf-8 でエンコードされている可能性があります
クライアントも文字化けする可能性がありますgbk または utf-8 でエンコードされている必要があります
Content-Disposition:attachment;filename=download.rar のようなヘッダー情報を取得したら、中国語のファイル名を判断し、必要に応じてクライアントの文字セットに従ってトランスコードする必要があります