PHPでIPやURLのソース情報を偽装する方法まとめ、URL Source_PHPチュートリアル
- WBOYオリジナル
- 2016-07-13 10:13:20902ブラウズ
php IPやURL元情報、URL元を偽装する方法まとめ
php偽のオリジン
最初のタイプ: php_curl
開け方:
1. php.ini を見つけて、extension=php_curl.dll を変更し、先頭のセミコロンを削除します。
2. php_curl.dll、php5ts.dll、libay32.dll、ssleay32.dll を windows/system32 ディレクトリにコピーし、php サービスを再起動します。
3. test.php テスト ファイルを作成し、次のコードを挿入します:
コードをコピーします コードは次のとおりです:
$ch =curl_init() //初期化
;
curl_setopt($ch, CURLOPT_URL, http://www.example.com/search.asp?page=3&typeid=film title&keyword=Jianguo Daye) // アクセスしたいページ
curl_setopt($ch, CURLOPT_REFERER, http://www.example.com/);
curl_setopt($chtml,CURLOPT_RETURNTRANSFER,1) //コンテンツを表示するかどうか
curl_exec($ch); //実行
curl_close($ch); //close に戻る
?>
2番目: fsockopen
コードをコピーします コードは次のとおりです:
$host = "www.example.com" //アクセスしたいドメイン名
;
$target = "/test.asp" //アクセスしたいページのアドレス
;
$referer = "http://www.example.com/" //偽のオリジンページ
;
$fp = fsockopen($host, 80, $errno, $errstr, 30);
if(!$fp){
echo "$errstr($errno)
n";
}その他{
$out = "
$target HTTP/1.1 を取得
ホスト: $host
リファラー: $referer
接続: 閉じるrnrn";
fwrite($fp, $out);
while(!feof($fp)){
エコー fgets($fp, 1024);
}
fclose($fp);
}
?>
PHP カール クロール Web サイト
------------------------------------------------- --------------------------------------
コードをコピーします コードは次のとおりです:
// cURL オブジェクトを初期化します
$curl =curl_init();
// クロールする必要がある URL を設定します
curl_setopt($curl, CURLOPT_URL, 'http://cocre.com');
//ヘッダーを設定します
curl_setopt($curl, CURLOPT_HEADER, 1);
//結果を文字列で保存するか画面に出力するように cURL パラメータを設定します。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// cURL を実行して Web ページをリクエストします
$data =curl_exec($curl);
// URL リクエストを閉じる
curl_close($curl);
// 取得したデータを表示します
var_dump($data);
================================================ === ==============================================
curl_setopt() 関数は、CURL セッションのオプションを設定します。 option パラメータは必要な設定であり、value はこのオプションで指定される値です。
次のオプションの値は、long 整数 (オプション パラメーターで指定) として使用されます:
*CURLOPT_INFILESIZE: ファイルをリモート サイトにアップロードするとき、このオプションはアップロードするファイルのサイズを PHP に伝えます。
*CURLOPT_VERBOSE: CURL にすべての予期しないイベントを報告させたい場合は、このオプションをゼロ以外の値に設定します。
*CURLOPT_HEADER: 出力にヘッダーを含める場合は、このオプションをゼロ以外の値に設定します。
*CURLOPT_NOPROGRESS: PHP に CURL 転送の進行状況バーを表示させたくない場合は、このオプションをゼロ以外の値に設定します。
注: PHP はこのオプションをゼロ以外の値に自動的に設定します。このオプションはデバッグ目的でのみ変更してください。
*CURLOPT_NOBODY: 出力に本体部分を含めたくない場合は、このオプションをゼロ以外の値に設定します。
*CURLOPT_FAILONERROR: エラーが発生したときに PHP でエラー (HTTP コードが 300 以上を返す) を表示しないようにするには、このオプションをゼロ以外の値に設定します。デフォルトの動作では、通常のページが返され、コードは無視されます。
*CURLOPT_UPLOAD: PHP にアップロードの準備をさせたい場合は、このオプションをゼロ以外の値に設定します。
*CURLOPT_POST: PHP で通常の HTTP POST を実行する場合は、このオプションをゼロ以外の値に設定します。この POST は通常の application/x-www-from-urlencoded タイプで、主に HTML フォームで使用されます。
*CURLOPT_FTPLISTONLY: このオプションをゼロ以外の値に設定すると、PHP は FTP のディレクトリ名をリストします。
*CURLOPT_FTPAPPEND: このオプションをゼロ以外の値に設定すると、PHP はリモート ファイルを上書きせずに適用します。
*CURLOPT_NETRC: このオプションをゼロ以外の値に設定すると、PHP は ~./netrc ファイル内で接続先のリモート サイトのユーザー名とパスワードを検索します。
*CURLOPT_FOLLOWLOCATION: このオプションをゼロ以外のヘッダー ("Location: " など) に設定すると、サーバーはそれを HTTP ヘッダーの一部として送信します (これは再帰的であることに注意してください。PHP は "Location: " のようなヘッダーを送信します)。
*CURLOPT_PUT: HTTP を使用してファイルをアップロードするには、このオプションをゼロ以外の値に設定します。このファイルをアップロードするには、CURLOPT_INFILE オプションと CURLOPT_INFILESIZE オプションを設定する必要があります。
*CURLOPT_MUTE: このオプションをゼロ以外の値に設定すると、PHP は CURL 関数に対して完全にサイレントになります。
*CURLOPT_TIMEOUT: 最大秒数として長整数を設定します。
*CURLOPT_LOW_SPEED_LIMIT: 送信されるバイト数を制御する長整数を設定します。
*CURLOPT_LOW_SPEED_TIME: CURLOPT_LOW_SPEED_LIMIT で指定されたバイト数を送信する秒数を制御する長整数を設定します。
*CURLOPT_RESUME_FROM: バイト オフセット アドレス (転送先の開始フォーム) を含む長いパラメータを渡します。
*CURLOPT_SSLVERSION: SSL バージョンを含む長いパラメータを渡します。デフォルトでは、PHP は独自のハードワークを実行しますが、セキュリティを強化するには手動で設定する必要があります。
*CURLOPT_TIMECONDITION: 長いパラメーターを渡して、CURLOPT_TIMEVALUE パラメーターの処理方法を指定します。このパラメータは TIMECOND_IFMODSINCE または TIMECOND_ISUNMODSINCE に設定できます。これは HTTP のみに適用されます。
*CURLOPT_TIMEVALUE: 1970 年 1 月 1 日から現在までの秒数を渡します。この時間は、CURLOPT_TIMEVALUE オプション、またはデフォルトの TIMECOND_IFMODSINCE によって指定された値として使用されます。
次のオプションの値は文字列として扱われます:
*CURLOPT_URL: これは、PHP を使用して取得する URL アドレスです。このオプションは、curl_init() 関数を使用した初期化中に設定することもできます。
*CURLOPT_USERPWD: 検証のために [ユーザー名]:[パスワード] の形式で文字列を渡します。
*CURLOPT_PROXYUSERPWD: [ユーザー名]:[パスワード] の形式で文字列を渡し、HTTP プロキシに接続します。
*CURLOPT_RANGE: 指定したい範囲を渡します。 X または Y を除いた「X-Y」形式である必要があります。 HTTP 転送では、カンマ (X-Y、N-M) で区切られた複数の間隔もサポートされます。
*CURLOPT_POSTFIELDS: すべてのデータを含む文字列を HTTP "POST" 操作として渡します。
*CURLOPT_REFERER: HTTP リクエスト内の「リファラー」ヘッダーを含む文字列。
*CURLOPT_USERAGENT: HTTP リクエスト内の「user-agent」ヘッダーを含む文字列。
*CURLOPT_FTPPORT: ftp "POST" コマンドで使用される IP アドレスを含む IP アドレスを渡します。この POST コマンドは、指定した IP アドレスに接続するようにリモート サーバーに指示します。 この文字列には、IP アドレス、ホスト名、ネットワーク インターフェイス名 (UNIX の場合)、または「-」 (システムのデフォルトの IP アドレスを使用) を指定できます。
*CURLOPT_COOKIE: HTTP Cookie を含むヘッダーを接続に渡します。
*CURLOPT_SSLCERT: 証明書を含む文字列を PEM 形式で渡します。
*CURLOPT_SSLCERTPASSWD: CURLOPT_SSLCERT 証明書を使用するために必要なパスワードを含むパスワードを渡します。
*CURLOPT_COOKIEFILE: Cookie データを含むファイルの名前を含む文字列を渡します。この Cookie ファイルは、Netscape 形式であることも、ファイルに保存されている HTTP スタイルのヘッダーのスタックであることもできます。
*CURLOPT_CUSTOMREQUEST: HTTP リクエストを行うときに、GET または HEAD で使用される文字を渡します。 HTTP リクエストを実行するときに GET または HEAD の代わりに使用される文字列を渡します。これは、別のよりわかりにくい HTTP リクエストを実行する場合に便利です。
注: サーバーがコマンドをサポートしていることを確認する前にこれを実行しないでください。
次のオプションには、ファイルの説明 (fopen() 関数を使用して取得) が必要です:
*CURLOPT_FILE: このファイルは、配置して送信する出力ファイルになります。デフォルトは STDOUT です。
*CURLOPT_INFILE: このファイルは、送信した入力ファイルです。
*CURLOPT_WRITEHEADER: このファイルには出力のヘッダー部分が含まれます。
*CURLOPT_STDERR: このファイルには、stderr の代わりにエラーが書き込まれています。
データを転送する
-------------------------------------------------- --------------------------------------------------
コードをコピーします コードは次のとおりです:
$phoneNumber = '13912345678';
$message = 'このメッセージはcurlとphpによって生成されました';
$curlPost = 'pNUMBER=' .urlencode($phoneNumber) .
urlencode($message) '&SUBMIT=送信';
$ch =curl_init();curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data =curl_exec();
curl_close($ch);
?>
================================================ === ==========================================
プロキシサーバーについて
-------------------------------------------------- ------------------------------------------
コードをコピーします コードは次のとおりです:
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'ユーザー:パスワード');
$data =curl_exec();curl_close($ch);
?>
================================================ === =============================================
SSLとCookieについて
HTTPS プロトコルである SSL については、CURLOPT_URL 接続の http:// を https:// に変更するだけです。もちろん、サイトを検証するために設定できる CURLOPT_SSL_VERIFYHOST というパラメーターもあります。
Cookie については、次の 3 つのパラメータを理解する必要があります:
CURLOPT_COOKIE、対面セッション中に Cookie を設定します
CURLOPT_COOKIEJAR、セッション終了時にクッキーを保存します
CURLOPT_COOKIEFILE、クッキー ファイル。
HTTPサーバー認証
------------------------------------------------- -------------------------------------------------- ----------------------------
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt(CURLOPT_USERPWD, '[ユーザー名]:[パスワード]')
$data =curl_exec();
curl_close($ch);
?>
================================================= ===================================
httpの実装を取得
コードをコピーします コードは次のとおりです:
$ch =curl_init( http://www.webjx.com/ );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$output =curl_exec($ch);
$fh = fopen( out.html , 'w');
fwrite($fh, $output);
fclose($fh);
httpポスト実装
コードをコピーします コードは次のとおりです:
// 投稿からデータを抽出します
抽出($_POST);
//POST変数を設定します
$url = 'http://www.webjx.com/get-post.php';
$fields = 配列(
'lname'=>urlcode($last_name),
'fname'=>urlcode($first_name),
'title'=>urlencode($title),
'会社'=>urlcode($institution),
'年齢'=>urlencode($age),
'email'=>urlcode($email),
'電話'=>urlencode($phone)
);
//POST のデータを URL 化します
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string ,'&');
//接続を開く
$ch =curl_init();
//URL、POST変数の数、POSTデータを設定します
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
//投稿を実行
$result =curl_exec($ch);
//接続を閉じる
curl_close($ch);
复制代価代価如下:
set_time_limit(0);
@date_default_timezone_set('アジア/上海');
関数curlrequest($url,$postfield,$proxy=""){
$proxy=trim($proxy);
$user_agent ="Mozilla/4.0 (互換性; MSIE 6.0; Windows NT 5.1; SV1)";
$ch =curl_init(); // 初開始化CURL句柄
if(!empty($proxy)){
curl_setopt ($ch, CURLOPT_PROXY, $proxy);//設置代理服务器
}
curl_setopt($ch, CURLOPT_URL, $url); //設定要求のURL
//curl_setopt($ch, CURLOPT_FAILONERROR, 1); // 使用時には HTTP ステータスを表示し、400 より小さい略号番号の HTTP 情報で実行されるようにします
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);//启用会将サービス务器サービス务器が返される“Location:”放在ヘッダ内递归的返给サービス务器
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);// 直接出力ではなく、TRUE ハンドルcurl_exec() の結果转化が文字列になります
curl_setopt($ch, CURLOPT_POST, 1);//启用POST提交
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfield); //設置POST提示文字列
//curl_setopt($ch, CURLOPT_PORT, 80); //設置端末
curl_setopt($ch, CURLOPT_TIMEOUT, 25); //超時間
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);//HTTP请要求User-Agent:头
//curl_setopt($ch,CURLOPT_HEADER,1);//出力中にTRUEに情報が含まれています
//$fp = fopen("example_homepage.txt", "w");//输出文件
//curl_setopt($ch, CURLOPT_FILE, $fp);// 出力ファイルの位置を設定します。値はソースの種類の 1 つであり、STDOUT (レビュアー) として認識されます。
curl_setopt($ch,CURLOPT_HTTPHEADER,array(
)
'受け入れ言語: zh-cn',
「接続: キープアライブ」、
「キャッシュ制御: キャッシュなし」
));//設置HTTP头情報
$document =curl_exec($ch); // 指定された CURL を実行します
$info=curl_getinfo($ch); //返される情報の特性を取得します
//print_r($info);
if($info[http_code]=="405"){
echo "不正なプロキシ {$proxy}n"; //代理出错
終了します;
}
//curl_close($ch);
$document を返します;
}
//リクエストURL
$url="http://example.cn/getInfo.php";
//POST 接続データ、HTTPWATCH で閲覧可能
$postfield="userName=test&year=2008&passWord=123456&Submit=�ύ";
//代理服务器
$proxy = '';
//请求
$str=curlrequest($url,$postfield,$proxy);
//输出結果
エコー $str;
复制代価代価如下:
関数 request_by_socket($remote_server,$remote_path,$post_string,$port = 80,$timeout = 30){
$socket = fsockopen($remote_server,$port,$errno,$errstr,$timeout);
if (!$socket) die("$errstr($errno)");
fwrite($socket,"POST $remote_path HTTP/1.0rn");
fwrite($socket,"ユーザーエージェント: ソケットの例rn");
fwrite($socket,"HOST: $remote_serverrn");
fwrite($socket,"Content-type: application/x-www-form-urlencodedrn");
fwrite($socket,"Content-length: ".strlen($post_string)+8."rn");
fwrite($socket,"受け入れる:*
関数 request_by_curl($remote_server,$post_string){
$ch =curl_init();
curl_setopt($ch,CURLOPT_URL,$remote_server);
curl_setopt($ch,CURLOPT_POSTFIELDS,'mypost='.$post_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_USERAGENT,"Jimmy の CURL サンプル ベータ版");
$data =curl_exec($ch);
curl_close($ch);
$data を返します;
}
関数 request_by_other($remote_server,$post_string){
$context = 配列(
'http'=>配列(
'メソッド'=>'POST',
'header'=>'Content-type: application/x-www-form-urlencoded'."rn".
'ユーザーエージェント: Jimmy の POST サンプル ベータ版'."rn".
'コンテンツの長さ: '.strlen($post_string)+8,
'content'=>'mypost='.$post_string)
);
$stream_context = stream_context_create($context);
$data = file_get_contents($remote_server,FALSE,$stream_context);
$data を返します;
}
?>
http://www.bkjia.com/PHPjc/917025.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/917025.html技術記事 php 来路伪造第一种:php_curl 开启方法: 1、找到php.ini、修改extension=php_curl.dll 前の分号去掉...
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。