Wir wissen, dass der HTTP-Header beim Anfordern einer Website einige IP-Informationen enthält. Durch die Fälschung dieser Informationen können wir den Effekt unterschiedlicher IP-Zugriffsanfragen erzeugen.
Wir setzen die Header CLIENT-IP und X-FORWARDED-FOR auf die IP, die wir fälschen möchten, und der Server erhält die von uns angegebene IP.
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.
(Verwandte Lernvideofreigabe: PHP-Video-Tutorial)
Bei normaler TCP/IP-Zweiparteienkommunikation kann die Quell-IP also nicht gefälscht werden Um zu sagen: Im TCP/IP-Protokoll kann die Quell-IP des Datenpakets gefälscht werden, 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 andere Partei 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.
PHP erstellt zufälliges IP-Zugriffsbeispiel:
<?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")); ?>
Empfohlene Tutorials zu verwandten Artikeln: PHP-Tutorial
Das obige ist der detaillierte Inhalt vonSo erstellen Sie einen zufälligen IP-Zugriff in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!