在用 scrapy 爬取天猫商品评价时,爬了几次后发现爬取不了了,在浏览器里打开需要输入验证码,怎么破?

2016-04-25 13:44:53 +08:00
 lls8672
因为评价是动态生成的,所以我自己按照评价页面的链接的规律构造链接,然后进行访问,下载,解析,但是几次之后,就不行了,于是我将自己构造的链接输入浏览器,提示要输验证码。。。可能是被天猫发现了,那要怎么做才能不被发现?
10283 次点击
所在节点    Python
27 条回复
wind3110991
2016-04-25 14:03:39 +08:00
你如果连续用同一个 ip 爬肯定要被 ban 掉吧
hiboshi
2016-04-25 14:07:02 +08:00
很明显被限制了,用 adsl vps 吧
9hills
2016-04-25 14:10:42 +08:00
用代理池爬,控制速度
dxwwym
2016-04-25 14:12:13 +08:00
每天数以百万的新评价,能评的过来?
pubby
2016-04-25 14:22:30 +08:00
降低访问频率!

1. 登录账号,每个账号用一个独立的代理 ip ,控制访问频率(大概 10 秒一次,出现验证码几率会降低)
2. 不登录账号,每个代理 ip 控制访问频率,需要很低频率才行,否则就不是验证码了而是直接让你登录,所以控制访问频率+切换 ip 吧。
sosozzzx
2016-04-25 15:19:17 +08:00
神箭手云爬虫开放开发者功能啦~
海量规则免费使用, 24 小时云端采集,
舆情监控即时更新,自动同步多个网站,
5 行代码创建专属于你的云爬虫!
odirus
2016-04-25 15:25:09 +08:00
selenium ,通过 chromedriver 连接 chrome 浏览器。

解析也面前,代码里面检测是否出现了验证码页面或者弹窗,出现的时候使用 sleep 函数,等待人肉输入验证码,验证码输入完成之后,程序再接着运行。阿里云再神也识别不出你来。

哈哈哈。之前在爬一个 google 验证吗的网站时就这么干的。
hadoop
2016-04-25 15:50:42 +08:00
@hiboshi adsl vps 可以 linux 命令行拨号,对外提供代理 api 接口吗
gimp
2016-04-25 15:54:12 +08:00
selenium + 人肉打码
azh7138m
2016-04-25 16:01:46 +08:00
@sosozzzx [神箭手平台服务协议] 这个没有啊,根本看不到这个
pubby
2016-04-25 16:28:05 +08:00
@hadoop 可以的

一般安装了 rp-pppoe ,没有的话自己装一下

pppoe-setup 设置一下账号密码

ifup ppp0 拨号

重拨换 ip 用

ifdown ppp0 && sleep 5 && ifup ppp0


这些 vps 是这样的:
给你一个管理 ip 和端口,然后 ssh -p <端口> root@管理 IP 连上去 拨号

拨号后 ppp0 上会有动态 ip

然后开个 socks5 或者 http 代理 (可能需要处理一下 iptables 规则)

本地用的时候记得连那个 动态 ip : 代理端口
hadoop
2016-04-25 16:47:00 +08:00
@pubby 老司机! 有推荐的商家推荐吗? 首富家分不清哪个好哪个坏
fhefh
2016-04-25 16:52:55 +08:00
odirus
2016-04-25 17:05:34 +08:00
@fhefh 不是哒, at 错了吧?

selenium 人肉打码,任何验证码都可破,就是效率低。
billion
2016-04-25 17:05:35 +08:00
@odirus 我以前试过使用 selenium+angurjs ,爬一个页面要 2 分钟,太慢了。
odirus
2016-04-25 17:32:57 +08:00
@billion 嗯, selenium 主要是用于爬那些变态页面,例如 新浪微博(大部分 JSONP ),某些采用 google 验证码的网站(既要鼠标点击又要选择里面的文字),好处是能够像普通浏览器一样渲染整个页面,还能通过 chromedriver, firefoxdriver 等连接器连接浏览器,做到一步步地可视化调试,调试完成后再换成 phantomjs 这种无界面浏览器部署在服务器上。
pubby
2016-04-25 17:38:30 +08:00
@odirus 淘宝登录时滑块验证能搞定吗?
odirus
2016-04-25 17:44:55 +08:00
@pubby 是这样的。如果通过连接器连接 chrome 、 firefox 的话,是自动打开一个干净的浏览器界面(没有 cookie 、历史纪录等等),你可以在程序里面检测是否有验证码,如果有则程序等待(这个时候可以手动操作浏览器的,你就可以拖动滑块了),通过验证码验证之后的后续的逻辑再让程序自动完成。

如果你爬慢一点,可以登录验证一次,自动执行很多天,过几天检测到验证码界面时自动发短信到手机上嘛。
pubby
2016-04-25 17:51:08 +08:00
@odirus 嗯,抓取频率高了还是比较麻烦,输验证码会比清 cookie 改 ua ,重新登录频繁。

如果要连续不间断高频次抓取,需要不停输验证码以及重新登录,搞得我都想做个简单 app 带身边随时人工操作介入了 -_-
niceworld
2016-04-25 21:11:35 +08:00
你可以写个下载中间件,每抓个页面就更换一个代理,代理 ip 可以找免费分享的那种,抓个 1 、 2 千个,定时验证下就好了,基本可以用 3-5 天了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/274224

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX