这次双十一之后,发现淘宝更改了屏蔽策略,直接抓取店铺会被跳转到登陆页面。
本来是准备把抓取核心迁移到selenium,各部分都准备好了,Demo也测试成功了,但是巧合的是在调试的过程中发现从 $refer = "http://login.m.taobao.com/login.htm?tpl_redirect_url=http://m.taobao.com"; 这个地址跳转到店铺不会被强制验证登陆。
那就好办了,只要对原来的抓取函数做一些修正,在原本直接抓取的基础上,模拟一次跳转。
经过测试,发现这个方案可行。不过每个小时只能抓取50家店铺,和原来一样。
不过作为一个能用就好的人,只要能凑合,就不去折腾了。下一次更新估计会把抓取核心迁移到selenium,顺便抽空把V2的店铺更新功能写掉。
PHP实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
function anftools_curlGetHtml($inputUrl){ if(!empty($inputUrl)) $url = $inputUrl; else return false; //设置cookies $cookie_jar = dirname(__FILE__)."/pic.cookie"; $refer = "http://login.m.taobao.com/login.htm?tpl_redirect_url=http://m.taobao.com"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $refer); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar); $content = curl_exec($ch); curl_close($ch); //初始化 $ch = curl_init(); //设置选项,包括URL curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_REFERER, $refer); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2"); //执行并获取HTML文档内容 $output = curl_exec($ch); //释放curl句柄 curl_close($ch); if(!$output) return false; else return $output; } |
2 comments