1
frogex OP 最初以为仅仅是滑块轨迹问题,但实际上,用 webdriver 打开 chrome 后,怎么手动都滑不过,后来才知道可能有检测环境之类。 说白也很难,如果特征有 100 个,不同的有 20 个,淘宝采集了 4 个,你没防那就被识破了
|
2
WaJueJiPrince 2019-01-17 12:58:11 +08:00
人工登陆,然后记录登陆信息可以吗?
使用 Selenium 中的 user-data-dir 参数。另外,淘宝好像是登陆以后频繁的翻页也会触发验证码。 |
4
a312901237 2019-01-17 13:11:40 +08:00
你 QQ 多少,联系我 Q312901237
|
5
frogex OP @WaJueJiPrince
本质不是想登陆,而是想过滑块,因为现在手工记录 cookie 去爬价格(商品详情页),还是时不时要验证 |
6
autulin 2019-01-17 14:17:28 +08:00 via iPhone
试过现在的版本很容易触发登陆机制,就算登陆了多点几下就要验证,也没有那么多帐号来试,想知道楼主怎么解决这个问题
|
8
dengtongcai 2019-01-17 14:20:17 +08:00 via iPhone
扫码登录吧…账密太多验证了
|
9
frogex OP @autulin 登陆没啥,手工获取 cookie,我的任务每周爬个 3 天就差不多可以了。 问题主要是滑块不好过,非 headless 下大概率过,但这显然不够好
|
10
momocraft 2019-01-17 14:28:02 +08:00
无头有头总归有区别的。如果无头不会真的渲染到屏幕,那 canvas 的行为可能就大不一样。
以前甚至见过用 canvas 字体渲染差异做浏览器指纹的论文.. |
11
zr8657 2019-01-17 14:30:33 +08:00
淘宝的销量只算今天往前推 30 天,LZ 打算怎么算日销量?商品列表的话就算你是正常用户翻个 7-8 页左右也会有验证码,selenium 的话大概 5-6 页会有滑块,再往后会有手机验证码不知你遇到没。详情页不需要登录就有价格啊,我是直接堆 ip
|
12
frogex OP @momocraft
我主要看了下 taobao 的那个 index.js 会有这么一句 function i() { if (a()) return !1; try { return !!u.createElement("canvas").getContext("webgl") } catch (n) { return !1 } } function a() { return "ontouchstart"in u } 实际上对于 i()的返回值,有头无头都试过了是一样的,所以姑且认为没靠这些检查。 话说这也是个死坑,哪天淘宝又改了这个 js 用别的检测方法也就没用了 |
13
5200 2019-01-17 14:37:48 +08:00
之前也卡在这一块,后面通过比较 low 的方法解决了。
|
14
frogex OP @zr8657
其实是要拿详情页的成交量而不是价格,实时的数据里面和外面有些不同的,包括价格。 手机验证码没遇到。翻页的验证码我是尝试 3 次滑动,没过 kill 掉记录时间,让父进程 x 分钟后拉起接着爬,虽然慢一点好歹也可以爬完。商品搜索列表页封的不严,但商品详情页就很严了,kill 很多次都还弹验证 |
15
ioven 2019-01-17 14:52:03 +08:00
如果数量不少很多,用 firefox49 + imacros 试试?
|
16
frogex OP @5200 怎么 low 的方法?只要不人工就不 low 啊
2 个月前有一个接口可以拿 https://detailskip.taobao.com/service/getData/1/p1/item/detail/sib.htm?itemId=x&modules=dynStock,qrcode,viewer,price,duty,xmpPromotion,delivery,activity,fqg,zjys,couponActivity,soldQuantity,originalPrice,tradeContract&callback=onSibRequestSuccess, 加 cookie 和 referer 就好了,现在封了,要在 cookie 里带一个 x5sec 才能过,不然返回 rgv587 这样的东西。而这个 x5sec 是通过滑块后才能获取,且只有半小时时间。 |
18
5200 2019-01-17 15:00:52 +08:00
@frogex
之前也是用 python,结果只要是通过 python 唤起的浏览器就一个劲的验证码。 后面专门拿了一台电脑,挂脚本,使用 AHK 写了一个小脚本。 模拟人工登录,拉取一些订单记录什么的。 获取一些信息,通过浏览器的控制器获取。 淘宝对页面刷新有频率限制,中间间隔几分钟再获取, 貌似频繁的翻页,和访问淘宝页面很容易出验证码, 他的频繁好像是针对的是这个 ip 下,如果 ip 里面有一个人有验证码了, 另外一个同 IP 下的账户也会出验证码。 |
20
frogex OP @5200 感觉不是频率这么简单吧,我要的数据不是特别多,所以爬的时候很克制了。 不过目前能爬完也是 kill + 等待拉起的方式,过搜索列表页还可以,过商品详情页就很难了,有时一直弹窗要验证
|
22
5200 2019-01-17 15:23:22 +08:00
@frogex 你目前是使用什么方式的呢,
我之前也尝试过很多种工具和语言方法, 有些工具就连登录都过不了, 淘宝里面的检测方法多得很, 也没精力去一个一个研究, 最后就使用脚本类,模拟键盘鼠标, 这个网页端肯定是检测不到的, 目前稳定运行了半年多了。 |
23
frogex OP @5200
你这个用按键精灵?感觉更不好稳定吧,如果位置什么的有偏差就做不了啊 我目前是 1.selenium + chrome headless, 爬列表页面,价格等数据有小几率获取,获取不到的记录-1。 2.另外启 selenium + chrome noheadless,随机获取-1 的数据循环重新请求价格,销量。 3.cookie 每天更换一次,chrome noheadless,每天早上 9 点爬虫会更新 cookie,时间不对(不是当天的 cookie )就手动扫码获取 cookie 如果 1 爬完了,2 这里还有大量的-1 记录,我就有点慌了,会不停的手工获取 x5sec 的数据直接抓接口了 |
24
murmur 2019-01-17 15:50:59 +08:00
淘宝的代码里会检查 webdriver 的标志 需要重新编译改变量名
|
26
farverfull 2019-01-17 16:44:16 +08:00
我也在其他地方遇到一样的滑块验证,只要是 selenium 调用的浏览器都无法划过去,挠头。结果也是用了 @5200 的方法干,不太稳定就是
|
27
5200 2019-01-17 17:14:18 +08:00 1
@frogex AHK 类似按键吧,位置什么的多一点判断就行,
有些位置比较不好识别我直接使用谷歌的控制台。 之前我也是 selenium + chrome headless,但是始终过不了登录的检测, 只要通过 selenium 启动起来的 chrome,就算手动登录那个滑块也通过不了。 反正之前折腾了一个星期也算是解决了。 中间偶尔位置有偏差的就修修补补了,现在也算能稳定了。 不过还在寻求新的更好的方法。 |
30
yangsi 2019-01-18 04:36:25 +08:00 via iPhone
在虚拟机里面运行和前台运行有区别吗? 还有能不能用其他浏览器?
|
32
yumenlong 2019-01-18 09:16:57 +08:00
换 pyqt 或者其他的非 selenium 驱动浏览器方案可以过检测
|
34
frogex OP @yumenlong
不会 pyqt,不过应该不只是 selenium 的问题,光看 taobao 的 js 就有 chromedriver 的指纹检测 |
35
yinaqu 2019-01-18 09:43:44 +08:00
兄弟,你是写 java 还是 python。
|
36
lkwfive 2019-01-18 09:57:57 +08:00
win10 和 OS_x 用 puppeteer 亲测自动登录有效
|
39
soulmine 2019-01-18 10:12:03 +08:00
反爬这东西 你觉得 tb 有多少人在搞
|
40
yinaqu 2019-01-18 10:29:24 +08:00
@frogex 过滑块之前只检测了 navigator.webdriver 这个特征,最近 TB 更新了验证,只改这个特征不行了。然后呢,可以很明确的说过不了滑块并不是因为 selenium 被检测到,而是 webdriver 的某些特征被检测到了(即使非 headless 用手拖也过不了),因为我使用的一款工具底层使用 selenium 但是可以过滑块。
|
41
dengtongcai 2019-01-18 10:37:21 +08:00
我已经把 淘宝芝麻分,订单明细,售后地址爬了
|
42
frogex OP @soulmine
我也知道,公司安全的负责人也说,你一个人怎么能应付一个团队,不要硬肛,要想别的办法,但什么大淘客还是不行啊,搜不到我要的。 但这爬东西又是公司必须的任务,之前从来没搞过,忧虑了好久,总没彻底去解决。 淘宝也有付费 api,不过 leader 还是希望能神不知鬼不觉的用爬虫比较好 |
43
frogex OP @yinaqu
淘宝检测了什么我不确定是不是只在 sufei_data 那个 js 里,从我分析看,至少有检测了 10 个函数,至少 headless 都 pass 了和非 headless 一样的结果。其他的实在看不下去了,都是混淆过的代码,命名 abcdefg,函数各种混着赋值,似乎要人肉维护一个函数调用关系 |
44
frogex OP @dengtongcai
爬简单,要能稳定长期、全自动化、有效的爬才难啊 |
45
winglight2016 2019-01-18 11:45:50 +08:00
我在 mac 上的 chrome,纯手动打开都会反复要求登录,天猫的商品实际价格也出不来,不知道是啥情况?
|
46
beforeuwait 2019-01-18 11:57:01 +08:00
阿里的反爬太厉害了
|
47
yanzixuan 2019-01-18 12:22:27 +08:00
阿里的反爬,我特么正常使用也经常不行啊。动不动就要验证。。。
|
48
ctro15547 2019-01-18 13:01:16 +08:00
机子支持开几个 android 虚拟机?
|
49
dengtongcai 2019-01-18 13:10:52 +08:00
@frogex 扫码登录不能做吗,我就是扫码
|
50
NonClockworkChen 2019-01-18 13:23:38 +08:00
要爬淘宝,我内心是拒绝的
|
51
frogex OP @dengtongcai
请看全文,不仅是登陆,是要长期稳定的爬,且能过各种滑块,目前最终方案在 23F, 放 win 虚拟机跑了 |
52
IWSR 2019-01-18 17:40:33 +08:00
你们就没考虑过淘宝写反爬的也在 V2EX 里面看这贴吗
|
54
xiao38245 2019-01-19 11:56:50 +08:00
我之前爬过手机端淘宝, m.taobao.com 加密的参数只有一个, 我记得是 md5 加密来着, 还算简单, 知乎有帖子
|
55
iamdaguduizhang 2019-01-19 15:21:49 +08:00
|
56
iamdaguduizhang 2019-01-19 15:23:08 +08:00
现在这个也不能爬了,
|
57
frogex OP @xiao38245
手机淘宝是二进制的协议吧,要破协议,这个我没经验。而且直接抓接口的方法淘宝随便封更容易,感觉还是模拟人的操作稍微靠谱点 |
58
wc110302 2019-01-21 18:59:34 +08:00
修改 chromedriver 源码以及 mitmdump 挂脚本,拦截 js 的方法我都使用过,noheadless 确实都能大概率过,但是 headless 就一次过不了,也就说只能在 windows 上跑了,暂时也没想到什么好的方法能挂在 liunx 上。先 mark 一下
|
59
keyakizaka46 2019-01-21 20:15:57 +08:00
@frogex 最近接了一个爬取天猫的任务,也是被各种反爬搞的焦头烂额。我可以有酬买你的源码吗?
|
62
iamdaguduizhang 2019-01-24 14:53:57 +08:00
@keyakizaka46 我有可以爬取淘宝 h5 的代码,可以用
|
63
keyakizaka46 2019-01-24 16:21:33 +08:00
@iamdaguduizhang 加我 QQ:690930494
|
64
okface 2019-01-26 17:23:48 +08:00
@iamdaguduizhang 老哥,加我 qq 394115733
|
67
love9918 2019-02-12 10:31:28 +08:00
之前研究过一段,淘宝现在好像没验证了,使用 cookie 随机 useragent 外加随机代理跳过登录,直接爬取信息
|
68
thursday 2019-02-28 19:28:07 +08:00
有需要爬淘宝 app 需求的可以加我 qq 都能爬 348️⃣531171
|
69
thursday 2019-02-28 19:30:05 +08:00
用的是 app 接口计算 xsign
|
71
lxk11153 2020-03-16 22:29:18 +08:00
@frogex #16 x5sec 的问题好难,而且不同地方貌似检测级别不一样,比如登录好像低一点(登录时滑动通过了)
然后进页面,页面请求 api,返回个错误需要 x5sec 然后弹框让你滑动,页面是显示滑动通过的,然后页面再次请求 api 又告诉你还需要滑[滑稽]。。。懵了 |
72
no13bus 2020-07-10 15:07:57 +08:00
楼主问题解决了吗?想跟你交流下。我的微信 no13bus
|