鱼C论坛

 找回密码
 立即注册
查看: 2444|回复: 11

妹子图的反扒机制问题

[复制链接]
发表于 2019-1-2 00:08:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我拿妹子图这个网站坐scrapy的练习 https://www.mzitu.com/
但发现图片趴不下来,自己直接输入地址页不行报403错误
我看网上说是有反扒机制,使用了防盗链,修改好reference就好了
但我修改后发现仍然不行,我想是不是反扒机制修改,
还请各位大佬帮忙看下 可以的话再讲讲爬虫反扒如何去破解
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-1-2 08:58:24 | 显示全部楼层
不敢看,网站太羞耻
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-2 15:40:07 | 显示全部楼层
老铁  你这个太不健康了吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-2 23:37:40 | 显示全部楼层
...很多爬虫教程都以这个网站为列都吧。。。
比如我就是参考了https://cuiqingcai.com/4421.html/comment-page-1#comments,来做的。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-2 23:47:25 | 显示全部楼层
你能上代码吗??
补个Referer和headers就好啦。   
之前我就是因为发表这个网站的scrapy爬虫被举报过。
没记错的话。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-3 00:27:32 | 显示全部楼层
wongyusing 发表于 2019-1-2 23:47
你能上代码吗??
补个Referer和headers就好啦。   
之前我就是因为发表这个网站的scrapy爬虫被举报过。
...

referer和headers我是在中间件里修改的,代码贴下面里
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-3 00:28:59 | 显示全部楼层
class MeizituDownloaderMiddleware(object):
    # Not all methods need to be defined. If a method is not defined,
    # scrapy acts as if the downloader middleware does not modify the
    # passed objects.

    @classmethod
    def from_crawler(cls, crawler):
        # This method is used by Scrapy to create your spiders.
        s = cls()
        crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)
        return s

    def process_request(self, request, spider):
        # Called for each request that goes through the downloader
        # middleware.

        # Must either:
        # - return None: continue processing this request
        # - or return a Response object
        # - or return a Request object
        # - or raise IgnoreRequest: process_exception() methods of
        #   installed downloader middleware will be called
        USER_AGENTS = [
    "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
    "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
    "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
    "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",
    "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",
    "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",
    "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",
    "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5"
    ]

        useragent = random.choice(USER_AGENTS)

        request.headers["User-Agent"] = useragent
      
        request.headers['referer'] = request.url
        print(request.headers)
        return None
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-3 02:00:28 | 显示全部楼层
战场原 发表于 2019-1-3 00:28
class MeizituDownloaderMiddleware(object):
    # Not all methods need to be defined. If a method is ...

其实这个网站没什么的反爬措施。
没必要用到随机headers
说一下策略。  

一、抓取所有数据
先抓下整个网站的页面数据。  
简单来说就是妹子图的链接的规律。  
没记错的话,2018年开始的图片需要一个axjx数据进行一下拼接。  
其他数据都是可以通过页码拼接的。  
把数据获取后,进入下载模式。

二、下载模式
把所有数据利用字符拼接获取图片链接和refer参数
等待下载完成即可。


你说你得到的是403错误。
很大原因是由于你不理解scrapy的异步。  
感觉你是由于异步导致每次的refer网址不正确才会出现403
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-3 02:06:23 | 显示全部楼层
刚刚去看了一下
这个网站我没有写成scrapy。
我用requests写的。
2018年之前的话我是用撞库爬取的。  

你可以模仿一下我的做法。先获取数据,再爬内容这种策略。  
不过,你最好要会数据库才行。
  1. https://github.com/wongjyusing/meizi_spider
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-3 19:14:14 | 显示全部楼层
wongyusing 发表于 2019-1-3 02:06
刚刚去看了一下
这个网站我没有写成scrapy。
我用requests写的。

但我直接用浏览器输入那个URL也是403错误,跟异步没关系吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-3 19:31:54 | 显示全部楼层
wongyusing 发表于 2019-1-3 02:06
刚刚去看了一下
这个网站我没有写成scrapy。
我用requests写的。

我看了下github上的代码,我们趴的网站略有不同
但你趴的那个反扒也是有的吧,用浏览器直接搜索具体图片的URL会发生重定向
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-4 16:21:26 | 显示全部楼层
战场原 发表于 2019-1-3 19:14
但我直接用浏览器输入那个URL也是403错误,跟异步没关系吧

你浏览器没有refer参数导致403的。
有可能是由于你的代码写法导致refer参数不对。
看你怎么写吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-12 18:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表