Wenn wir eine Site anfordern, enthält der HTTP-Header einige IP-Informationen. Durch die Fälschung dieser Informationen können wir den Effekt unterschiedlicher IP-Zugriffsanfragen erzeugen.
Header CLIENT-IP und X-FORWARDED-FOR werden auf die IP gesetzt, die wir fälschen möchten, und der Server erhält die von uns angegebene IP.
Empfohlenes Lernen: PHP-Video-Tutorial
X-Forwarded-For ist ein Erweiterungsheader. Das Protokoll HTTP/1.1 (RFC 2616) definiert es nicht. Es wurde zuerst von Squid, einer Caching-Proxy-Software, eingeführt, um die tatsächliche IP des HTTP-Anforderers darzustellen. Jetzt ist es zu einem De-facto-Standard geworden und wird von großen HTTP-Anbietern verwendet Proxys, Weiterleitungsdienste wie Lastausgleich sind weit verbreitet und im RFC 7239-Standard (Forwarded HTTP Extension) geschrieben.
Bei normaler TCP/IP-Zweiparteienkommunikation kann die Quell-IP nicht gefälscht werden Das heißt, im TCP/IP-Protokoll heißt es, dass die Quell-IP des Datenpakets gefälscht werden kann, dies führt jedoch dazu, dass das gesendete Datenpaket niemals zurückkehrt, was eine normale Kommunikation unmöglich macht. Das ist so, als ob wir einen Brief an die Gegenpartei schreiben: Wenn wir die falsche Absenderadresse angeben und der Empfänger entsprechend der Absenderadresse auf dem Umschlag antwortet, kann der ursprüngliche Absender die Antwort nicht erhalten.
Einige DDoS-Angriffe, wie z. B. SYN-Flood, nutzen diesen Fehler in TCP/IP aus, um den Angriff durchzuführen.
Im Folgenden wird beschrieben, wie PHP einen Direktzugriff konstruiert.
<?php function curl($url,$ifpost = 0, $datafields = '', $cookiefile = '', $v = false){ $ip_long = array( array('607649792', '608174079'), //36.56.0.0-36.63.255.255 array('1038614528', '1039007743'), //61.232.0.0-61.237.255.255 array('1783627776', '1784676351'), //106.80.0.0-106.95.255.255 array('2035023872', '2035154943'), //121.76.0.0-121.77.255.255 array('2078801920', '2079064063'), //123.232.0.0-123.235.255.255 array('-1950089216', '-1948778497'), //139.196.0.0-139.215.255.255 array('-1425539072', '-1425014785'), //171.8.0.0-171.15.255.255 array('-1236271104', '-1235419137'), //182.80.0.0-182.92.255.255 array('-770113536', '-768606209'), //210.25.0.0-210.47.255.255 array('-569376768', '-564133889'), //222.16.0.0-222.95.255.255 ); $rand_key = mt_rand(0, 9); $ip= long2ip(mt_rand($ip_long[$rand_key][0], $ip_long[$rand_key][1])); $header = array("Connection: Keep-Alive","Accept: text/html, application/xhtml+xml, */*", "Pragma: no-cache", "Accept-Language: zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3","User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)",'CLIENT-IP:'.$ip,'X-FORWARDED-FOR:'.$ip); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, $v); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); $ifpost && curl_setopt($ch, CURLOPT_POST, $ifpost); $ifpost && curl_setopt($ch, CURLOPT_POSTFIELDS, $datafields); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $cookiefile && curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile); $cookiefile && curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile); curl_setopt($ch,CURLOPT_TIMEOUT,30); //允许执行的最长秒数 $ok = curl_exec($ch); curl_close($ch); unset($ch); return $ok; } print_r(curl("URL")); ?>
Das obige ist der detaillierte Inhalt vonPHP legt zufälligen IP-Zugriff fest. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!