2018年8月27日19:58:12
css指定字体的时候,可以自制的字体,比如字符替换,比如
0没有被替换,其他在源代码被替换对应的字母,但是现实的时候在替换成正确的数字
很简单,防爬虫,但是....呵呵
解决办法就是把爬回来的数据,自己根据规则替换回来
吧网页里 .ttf的文件找出来,使用 FontCreatorPortable打开,就可以看见规则了,足以ttl文件和eot文件的关系,一般只需要的ttf文件即可
写方法的时候发现了,一个bug,本人的php现在是7.2
function css_replace_decrypt($str = '') { $ttf_array = []; $ttf_array['0'] = '0'; $ttf_array['1'] = 'j'; $ttf_array['2'] = 'k'; $ttf_array['3'] = 'l'; $ttf_array['4'] = 'm'; $ttf_array['5'] = 'n'; $ttf_array['6'] = 'o'; $ttf_array['7'] = 'p'; $ttf_array['8'] = 'q'; $ttf_array['9'] = 'r'; if (empty($str)) { return 0; } $tr = str_split($str); // str_replace 无法使用,可能有bug foreach ($ttf_array as $k => $v) { foreach ($tr as $kk => &$vv) { if ((string) $v == (string) $vv) { $vv = $k; } } } $re = implode('', $tr); return $re; }
str_replace 无法这样使用
foreach ($ttf_array as $k => $v) {
str_replace($v,$k,$str);
}
无法替换,目前还不知道是这个是什么原因造成的