今天闲来无事,打算优化一下我网站对于抓取百度搜索页面的代码进行优化,使其判断的更加精准。
做到一半,发现不是代码的问题,而是百度开启的中间抓取源的二次验证,我看了一下,百度采用的是旋转图片式的验证方式,以我目前的技术还是无法做到自动验证或者绕过的。
说到绕过,(我的想法是添加一个header头,在php代码执行抓取任务的时候发送这个头,让对方认为是浏览器人工执行的搜索,从而不用进行验证。但是仔细想想,百度肯定能筛查我的请求,从而判断是机器执行还是真实用户点击。。。鉴于此,我还是不浪费时间进行实践了。)
目前抓取到页面内容的问题出在下面这个验证中:
我目前的技术储备还真没办法搞定它。
手动验证之后,才正确展示出来我需要的内容:
源代码的运行逻辑很简单,就是在百度搜索中输入网址进行查询,之后用php内置方法进行筛查,没有触发特定的内容则代码这个网页百度已经收录了,所以就直接在页面输出“已收录”的信息即可。
问题就出在机器抓取触发了百度的验证,不验证不返回信息。
等我无聊的时候我想我也会实践一下我上面这个猜想的可行性。。。
*****************************
一直有问题,一直过不去。测试了很久一直都是需要验证,有的时候刷新能直接显示我要的页面,但是再次刷新又需要验证了。
哎,搞得很头疼。
点击查看完整内容
贴上半截的代码:
//百度收录展示 function baidu_check($url){ // global $wpdb; // $post_id = ( null === $post_id ) ? get_the_ID() : $post_id; // $baidu_record = get_post_meta($post_id,'baidu_record',true); // if( $baidu_record != 1){ $ff123='http://www.baidu.com/s?wd='.$url; $curl=curl_init(); $header = array( 'User-Agent:'.'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36', 'Content-Type:'.'application/x-www-form-urlencoded; charset=UTF-8', 'Cookie:'.'PSTM=1610803928; BAIDUID=522DFSAFDFS654SA6BCD172F11:FG=1; BIDUPSID=23125d4sSFFS646973C7883085D46; BD_UPN=12314753; __yjs_duid=1_1c954f6ds4f6w8a683d4e70a74305401610876810213; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BDSFRCVID_BFESS=pYCOJexroG3VBR56a4dq94qvV3TDYLtOwXPsp3LGJLVJeC6EG0Pts1-dEu-EHtdogKK0gOTH6KF_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF_BFESS=tR3aQ5rtKRTffjrnhPF3KhFdXP6-hnjy3b7p5f_K54TZh-oNQh_BQTDUypjpJh3RymJJ2-39LPO2hpRjyxv45as4d64q65aHl51fbbvbURvD--g3-AqBM5dtjTO2bc_5KnlfMQ_bf--QfbQ0hOhqP-jBRIE3-oJqC_bMILm3f; H_PS_PSSID=33423_33438_33272_31660_33320_33544; delPer=0; BD_CK_SAM=1; PSINO=6; BD_HOME=1; BAIDUID_BFESS=528as4dq4z1fBCD172F11:FG=1; COOKIE_SESSION=192_0_3_3_19_3_0_0_2_2_0_1_3386_0_6_0_1612452777_0_1612452771%7C9%2376570_12_1611572491%7C6; ab_sr=1.0.0_NzM4ZDViM2RjZjViMas85d4q64zODg3NDIq854sNGI5YjBjZjk2ZTNlODk5MWNmN2RhZGYwNDQ5NGZlNjM3MTU2ZGRkZTQ4NDM4MGVkM2RlYjc2; kleck=311512e45e543a8s4d98q169842d40885e5; BA_HECTOR=a52l2k8g0kaga125di1g1o7qt0r; H_PS_645EC=6d1aVqcNZtt6x%q8744faaqUhmCLbSMmEJeNc8Ps%2FxzXW5kn8' ); curl_setopt($curl,CURLOPT_URL,$ff123); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); $rs=curl_exec($curl); curl_close($curl); //就一直死在这一步。 print($rs); $isMatched = preg_match_all('/[没有找到]+/i', $str, $matches); // if(!strpos($rs,'没有找到')){ // if( $baidu_record == 0){ // update_post_meta($post_id, 'baidu_record', 1); // } else { // add_post_meta($post_id, 'baidu_record', 1, true); // } // return 1; // } else { // if( $baidu_record == false){ // add_post_meta($post_id, 'baidu_record', 0, true); // } // return 0; // } // } else { // return 1; // } } function baidu_record() { exit(baidu_check(get_permalink())); if(baidu_check(get_permalink()) == 1) { echo '<a style="color:green;font-size:12px;float: right;" target="_blank" title="点击查看" rel="external nofollow" href="http://www.baidu.com/s?wd='.get_the_title().'"><i class="fa fa-paw fa-lx"></i>百度已收录</a>'; } else { echo '<a style="color:red;font-size:12px;float: right;" rel="external nofollow" title="点击提交,谢谢您!" target="_blank" href="http://zhanzhang.baidu.com/sitesubmit/index?sitename='.get_permalink().'"><i class="fa fa-paw fa-lx"></i>百度未收录</a>'; } }