In diesem Artikel wird die Verwendung der neuen CSS3-Funktions-Webschriftart vorgestellt und eine benutzerdefinierte Webschriftart verwendet, um die Datenerfassung zu verhindern
Einführung in die Webschriftart
web-font ist ein Tag in CSS3@font-face In der @font-face-Deklaration können Sie eine Schriftart deklarieren und diese angeben Die Schriftartenbibliotheksdatei wird von einer bestimmten Adresse im Internet heruntergeladen.
Die spezifische Schreibmethode ist wie folgt:
@font-face { font-family: '字体名称'; src: url('http://www.example.com/字体名称.eot'); /* IE9 Compat Modes */ src: url('http://www.example.com/字体名称.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('http://www.example.com/字体名称.ttf') format('truetype'), /* Safari, Android, iOS */ url('http://www.example.com/字体名称.woff') format('woff'), /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('http://www.example.com/字体名称.svg?#字体名称') format('svg'); /* Legacy iOS */}
Wenn Webseitendaten mit einer speziellen Schriftart geändert werden müssen, können wir Webfont verwenden. Da bei Verwendung von Webfont die Schriftart automatisch aus dem Netzwerk geladen wird, muss der Benutzer die Schriftart nicht auf dem Computer installiert haben.
Präventionsprinzip:
Mit Web-Font können Schriftarten aus dem Netzwerk geladen werden, sodass wir selbst eine Reihe von Schriftarten erstellen und eine benutzerdefinierte Zeichenzuordnungstabelle einrichten können.
Beispiel: Die Einstellung 0xaaa ordnet Zeichen 1 zu, 0xbbb ordnet Zeichen 2 zu und so weiter.
Wenn das Zeichen 1 angezeigt werden muss, ist der Quellcode der Webseite nur 0xaaa und die gesammelten Daten sind nur 0xaaa und nicht 1, sodass der Sammler keine korrekten Daten sammeln kann. Es gibt keine Auswirkungen auf Benutzer mit normalem Zugriff.
Es ist nicht geeignet, die Web-Font-Methode zu verwenden, um die Erfassung chinesischer Schriften zu verhindern, da die chinesische Schriftenbibliothek zu groß ist. Für Zahlen und Englisch eignet sich diese Methode zur Verhinderung der Erhebung.
Wählen Sie zur Vereinfachung der Demonstration die mit dem System gelieferte Schriftart Arial aus.
ttf in SVG
Geben Sie everythingfonts.com/ttf-to-svg ein
Laden Sie die ttf-Datei hoch und konvertieren Sie sie Schriftartdatei In SVG-Format konvertieren und als my_webfont.svg
speichern
Wählen Sie die Zeichen aus, die Sie verwenden möchten, und legen Sie die Schriftartzuordnungsbeziehung fest
Geben Sie icomoon.io/app/#/select ein
Wählen Sie die Schaltfläche Symbole importieren in der oberen linken Ecke und importieren Sie my_webfont.svg.
Wählen Sie nach dem Import die Zeichen aus, die wir verwenden möchten. In diesem Beispiel müssen wir nur auswählen 0-9, und klicken Sie dann in der unteren rechten Ecke auf die Schaltfläche Schriftart generieren
Zeichenzuordnung festlegen
Arial-Schriftart-Zeichenzuordnungsbeziehung (Zeichen und Hexadezimal). )
0 => 301 => 312 => 323 => 334 => 345 => 356 => 367 => 378 => 389 => 39
Uns Die Zuordnungsbeziehung kann hier so geändert werden, dass sie so komplex und unregelmäßig wie möglich ist, sodass sie nicht leicht zu erraten ist.
Setzen Sie beispielsweise die Zuordnungsbeziehung auf
0 => e1f21 => efab2 => eba33 => ecfa4 => edfd5 => effa6 => ef3a7 => e6f58 => ecb29 => e8ae
und ändern Sie den Namen entsprechend der Zuordnungsbeziehung, nachdem Sie die Zuordnungsbeziehung festgelegt haben Klicken Sie unten rechts auf HerunterladenLaden Sie die Schriftart herunter.
Benennen Sie alle heruntergeladenen Schriftartdateien als my_webfont.*
Zuerst müssen Sie @font-face festlegen
@font-face { font-family: 'my_webfont'; src: url('fonts/my_webfont.eot?fdipzone'); src: url('fonts/my_webfont.eot?fdipzone#iefix') format('embedded-opentype'), url('fonts/my_webfont.ttf?fdipzone') format('truetype'), url('fonts/my_webfont.woff?fdipzone') format('woff'), url('fonts/my_webfont.svg?fdipzone#my_webfont') format('svg');}
und dann müssen Sie eine CSS-Klasse definieren, „font-family“ verwendet diese Webschriftart
.my_webfont{ font-family: my_webfont !important; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}
Wenn Sie diese Art von Daten anzeigen müssen, geben Sie die Daten ein und die Klasse des Containers wird als my_webfont
<p class="my_webfont"></p>
definiert, damit das Zeichen 1 angezeigt werden kann .
<?php// 字体映射关系function get_font_num($num){ $result = ''; $font_map = array( 0 => 'e1f2', 1 => 'efab', 2 => 'eba3', 3 => 'ecfa', 4 => 'edfd', 5 => 'effa', 6 => 'ef3a', 7 => 'e6f5', 8 => 'ecb2', 9 => 'e8ae' ); for($i=0,$len=strlen($num); $i<$len; $i++){ $n = substr($num, $i, 1); if(is_numeric($n)){ $result .= '&#x'.$font_map[$n].';'; }else{ $result .= $n; } } return $result; }$data = array( array('金刚:骷髅岛', 4921.98, 5), array('美女与野兽', 971.36, 12), array('欢乐喜剧人', 590.27, 5), array('一条狗的使命', 389.76, 26), array('领袖1935', 271.27, 1), );?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>利用自定义web-font实现数据防采集</title> <style type="text/css"> @font-face { font-family: 'my_webfont'; src: url('fonts/my_webfont.eot?fdipzone'); src: url('fonts/my_webfont.eot?fdipzone#iefix') format('embedded-opentype'), url('fonts/my_webfont.ttf?fdipzone') format('truetype'), url('fonts/my_webfont.woff?fdipzone') format('woff'), url('fonts/my_webfont.svg?fdipzone#my_webfont') format('svg'); font-weight: normal; font-style: normal; } .my_webfont{ font-family: my_webfont !important; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } td{ padding: 0px 5px 0px 5px; text-align: center; } .left{ text-align: left; } </style> </head> <body> <table> <tr> <td>排名</td> <td>片名</td> <td>实时票房(万)</td> <td>上映天数</td> </tr><?php for($i=0,$len=count($data); $i<$len; $i++){ echo '<tr>'.PHP_EOL; echo '<td>'.($i+1).'</td>'.PHP_EOL; echo '<td class="left">'.$data[$i][0].'</td>'.PHP_EOL; echo '<td class="my_webfont">'.get_font_num($data[$i][1]).'</td>'.PHP_EOL; echo '<td class="my_webfont">'.get_font_num($data[$i][2]).'天</td>'.PHP_EOL; echo '</tr>'.PHP_EOL; }?> </table> </body></html>
Sie können normale Daten sehen, wenn Sie im Browser darauf zugreifen
Aber der HTML-Quellcode ist eigentlich
<tr><td>1</td><td class="left">金刚:骷髅岛</td><td class="my_webfont">.</td><td class="my_webfont">天</td></tr>
Sammler können nur so etwas wie x bekommen edfd; data weiß nicht, welches Zeichen durch edfd; abgebildet wird, wodurch die Datenerfassung verhindert wird.
Natürlich kann der Sammler die Bedeutung jeder Zuordnung durch Analyse kennen, um eine Konvertierungsverarbeitung nach der Sammlung durchzuführen.
Wir können mehrere verschiedene Schriftartdateien und Zuordnungstabellen erstellen. Bei jedem Besuch wird zufällig ein Typ verwendet und regelmäßig ein Stapel von Schriftartdateien und Zuordnungstabellen aktualisiert, um die Schwierigkeit der Erfassung zu erhöhen.
Auf diese Weise muss der Sammler alle Schriftdateien und Zuordnungstabellen analysieren und konvertieren, bevor er Daten sammelt, was die Kosten der Sammlung erheblich erhöht.
Das obige ist der detaillierte Inhalt vonVerwenden Sie eine benutzerdefinierte Webschriftart, um den Code zur Verhinderung der Datenerfassung zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!