Baidu|プログラム|アンチヒル|クラック
Baidu にアップロードされた写真は外部から参照できないため、多くの友人が心配しています。Verdanaクラスメートは、IE キャッシュをローカルでクリアすることでこの問題を解決できるクラッキング プログラム を開発しました。 、テストは成功しました。ホストがいないため、インターネットでテストしていません。興味がある場合は、これに基づいて最適化と改善を続けることもできます。プログラム
以下は PHP ソースコードです。
/**
* Baidu Space Album Picture Anti-Hotlink Crack Program - PHP Version
*
* 使用方法:
*
*
*
* @author verdana
* @version 1.0
* @since July 16, 2006
*/
Class Frivoller
{
/**
* HTTP バージョン (1.0、1.1)、Baidu はバージョン 1.1 を使用します
*
* @var string
*/
protected $version
/**
* HTTP 応答本文
*
* @var 文字列
*/
保護された $body;
/**
* HTTP URL
*
* @var 文字列
*/
保護された $link;
/**
* URL のさまざまなコンポーネントのいずれかを含む配列。
*
* @var 配列
*/
保護された $host; **
* HTTP ホスト
*
* @var 文字列
*/
protected $path;
/**
* 必要なファイルのパス。
* (例: '/verdana/abpic/item/mygirl.png')
*
* @var string
* /
protected $referer;
/**
* HTTP リファラー、元の URL からの追加
*
* @var string
*/
protected $method = 'GET'; &*/
保護 $ポート = 80;
/**
* HTTP メソッド、デフォルトは 'GET'
*
* @var string
*/
保護 $タイムアウト = 100;
保護 $ファイル名; protected $contentType;
/**
* HTTP ポート、デフォルトは 80
*
* @var int
*/
public function __construct($link )
{
// http リンクを解析します
$this->parseLink($link);
// 画像の取得を開始します
$stream = fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout);
if (!$stream) die ("エラー: $errno - $ errstrn");
fputs($stream, $this->buildHeaders());
$this->body = "";
while (!feof($stream)) {
$this->body . = fgets($stream, 4096);
}
//画像データを抽出します
$this ->extractBody($this->body);
// このファイルを正しく保存するために 'ContentType' ヘッダーを送信します
// CT は送信されず、IE7 は画像を保存しようとするとエラー (800700de) を生成します
/ / Flock、Firefox にはこの問題はありません、Opera はテストされていません
header("Content-Type: $this->contentType" );
print $this->body;
// この画像を保存します
// file_put_contents(' hello.jpg', $this->body);
}
/**
* ストリームのタイムアウト期間
*
* @var int
*/
プライベート関数 buildHeaders()
{
$request = "$this->メソッド $this->パス HTTP/1.1rn";
$request .= "ホスト: $this->hostrn"; ;
$request .= "Content-Type: image/jpegrn";
$request .= "Accept : */*rn";
$request .= "Keep-Alive: 300rn"; : closen";
$request .= "リファラー: $this->refererrn";
$request .= "キャッシュ制御: max-age=315360000rnrn";
return $request;
}
/**
* 画像のファイル名
*
* @var string
*/
private function extractBody(&$body)
{
// リンクのステータス
if (strpos($body, '200 OK') > 0) {
// ヘッダーを削除
$endpos = strpos( $body, "rnrn");
$body = substr($body, $endpos + 4);
// 次の行でファイルサイズを削除します
$body = substr($body, strpos($body, "rn") + 2 );
}
}
/**
* 画像ファイルの ContentType。
* 画像/jpeg、画像/gif、画像/png、画像
*
* @var 文字列
*/
プライベート関数 parseLink($link)
{
$this->link = $link
$this->components = parse_url($this-> ;リンク);
$this->ホスト = $this->コンポーネント['ホスト'] ;
$this->パス = $this->コンポーネント['パス'];リファラー = $this->components['scheme'] . '://' . $this->components['host'];
$this->ファイル名 = Basename($this->path);
// コンテンツタイプを抽出します
$ext = substr(strrchr($this->path, '.'), 1);
if ($ext == 'jpg' または $ext == 'jpeg') {
$this->contentType = 'image/pjpeg';
}
elseif ($ext = = 'gif') {
$this->contentType = 'image/gif';
elseif ($ext) == 'png') {
$this->contentType = 'image/x-png';
elseif ($ext == 'bmp') {
$this->contentType = 'image/bmp';
}
else {
$this->contentType = 'アプリケーション/オクテットストリーム';
}
}
}
// URL を取得します。指定された URL を確認する必要があるかもしれません
if (isset($_GET['url']) and $_GET['url'] != '') {
new Frivoller ($_GET['url']);
}
?>