百度、QQ浏览器、夸克、UC浏览器转码畅读模式解决方案


本文深度探讨QQ浏览器、百度APP、UC浏览器、夸克浏览器等畅读模式,转码阅读模式的解决方案
文章有点长,建议认真阅读,看完之后,你会知道其中的所有细节问题。
这四款APP,其中UC浏览器畅读模式最为恶心,一般浏览器针对其UA反馈为不同内容,就已经能解决畅读与转码的问题。
但是UC浏览器,他最为严重的地方是;
1.缓存其文章内容
2.隐藏自己的UA
针对UC浏览器的畅读模式,我早期是这样解决的:
1、加上识别UA代码,前端返回不同内容
为什么加上UA识别显示不同内容,不直接修改代码,全部加密或者更改内容显示方案呢?
那是因为,我们必须考虑到搜索引擎的问题,如果搜索引擎也识别不到内容,那么很可能会对网站降权处理,所以我们必须,搜索引擎能正确识别到网页内容,浏览器识别不到内容。
function browser(){
    $agent = strtolower($_SERVER['HTTP_USER_AGENT']);
    if(strpos($agent, 'baiduboxapp')){
        return 'baiduboxapp';
    }
    if(strpos($agent, 'ucbrowser')){
        return 'uc';
    }
    if(strpos($agent, 'quark')){
        return 'normal';
    }
    return 'normal';
}
2、返回的内容不能直接显示正文信息,一些常用的js调用方法也不能使用,可使用自定义字体引用,内容延迟跳转显示等。
可能会还是显示畅读,那是因为UC浏览器有缓存功能,可新建内容测试是否转码
再与UC浏览器畅读模式斗争的过程当中,UC浏览器的团队也一直在升级他们的畅读方案
可能是发现了无法转码畅读我的站点,UC团队升级了他们的畅读模式
他们隐藏起来了他们的UA信息,导致不能针对UC浏览器返回不同的内容
我也针对性的调整了一下代码,不进行识别UA,只判断是搜索引擎,还是其他访客,我只要保证搜索引擎不降权处理就行。
分享一下我升级后的代码
///////配置延迟时间

$loadTime = 2;//单位秒

///////配置延迟时间
function checkrobot($useragent=''){
    static $kw_spiders = array('bot', 'crawl', 'spider' ,'slurp', 'sohu-search', 'lycos', 'robozilla');
    static $kw_browsers = array('msie', 'netscape', 'opera', 'konqueror', 'mozilla');
    $useragent = strtolower(empty($useragent) ? $_SERVER['HTTP_USER_AGENT'] : $useragent);
    if(strpos($useragent, 'http://') === false && dstrpos($useragent, $kw_browsers)) return false;
    if(dstrpos($useragent, $kw_spiders)) return true;
    return false;
}

function dstrpos($string, $arr, $returnvalue = false) {
    if(empty($string)) return false;
    foreach((array)$arr as $v) {
        if(strpos($string, $v) !== false) {
            $return = $returnvalue ? $v : true;
            return $return;
        }
    }
    return false;
}

function is_mobile_request(){ 
    $_SERVER['ALL_HTTP'] = isset($_SERVER['ALL_HTTP']) ? $_SERVER['ALL_HTTP'] : ''; 
    $mobile_browser = '0'; 
    if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|iphone|ipad|ipod|android|xoom)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) 
        $mobile_browser++; 
    if((isset($_SERVER['HTTP_ACCEPT'])) and (strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') !== false)) 
        $mobile_browser++; 
    if(isset($_SERVER['HTTP_X_WAP_PROFILE'])) 
        $mobile_browser++; 
    if(isset($_SERVER['HTTP_PROFILE'])) 
        $mobile_browser++; 
    $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4)); 
    $mobile_agents = array( 
        'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac', 
        'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno', 
        'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-', 
        'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-', 
        'newt','noki','oper','palm','pana','pant','phil','play','port','prox', 
        'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar', 
        'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-', 
        'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp', 
        'wapr','webc','winw','winw','xda','xda-'
        ); 
    if(in_array($mobile_ua, $mobile_agents)) 
        $mobile_browser++; 
    if(strpos(strtolower($_SERVER['ALL_HTTP']), 'operamini') !== false) 
        $mobile_browser++; 
    // Pre-final check to reset everything if the user is on Windows 
    if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows') !== false) 
        $mobile_browser=0; 
    // But WP7 is also Windows, with a slightly different characteristic 
    if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows phone') !== false) 
        $mobile_browser++; 
    if($mobile_browser>0) 
        return true; 
    else
        return false; 
}


function browser(){
    $agent = strtolower($_SERVER['HTTP_USER_AGENT']);
    //如果不是蜘蛛并且是手机访问返回UC
    if (!checkrobot() && is_mobile_request()) {
        return 'uc';
    }
    if(strpos($agent, 'baiduboxapp')){
        return 'baiduboxapp';
    }
    if(strpos($agent, 'ucbrowser')){
        return 'uc';
    }
    if(strpos($agent, 'quark')){
        return 'normal';
    }
    return 'normal';
}
// $rico_content = var_export($_SERVER,true) . $rico_content;

// if($_GET['ajax_content']){
//     exit($rico_content);
// }
// print_r($_SERVER);die;
// var_dump(strtolower($_SERVER['HTTP_USER_AGENT']));die;
总结:
虽然UC一直在升级他们的畅读方案,我也一直在更新破解,每次都能成功破解,但是最后这个站点,在UC搜索当中降权了,其他搜索引擎正常(我明明是针对所有搜索引擎统一的方案)
所以得出一个结论,UC就是跟你耍流氓,你不让我畅读或者转码,我他妈的就降权不给你流量,你自己想好到底怎么选择。

评论