精华内容
下载资源
问答
  • 被反爬怎么办
    千次阅读
    2019-09-28 09:07:40

    在最近的业务需求中发现淘宝,美团,京东各大网站已经对selenium进行了反爬;
    推测,服务器端因该是判断一些特殊的字段和方法来识别爬虫,毕竟selenium下的chromedriver 与真实的chrome所在的环境和配置等是有差异的。
    为了完成项目需求,我尝试了一些简单的方法;

    方法一:

    发送请求的时候携带cookie,采用requests的Session状态保持,事实证明这种方法简单有效,可以成功访问。但是这是用于采集的数据量比较少的情况下。如果你想要快速采集,那就使用aiohttp吧!

    方法二:

    如果js可以破解的话,那就破解它了!
    实战案例:

    方法三:

    mitmproxy请求拦截

    1. 给本机设置代理ip
    2. 启动mitmproxy
    3. 打开chromewebdriver,查看各个JS文件,是否存在driver字样,找到最终的JS文件
    4. 干扰脚本
    5. 退出mitmproxy

    方法四:

    使用pyppeteer无头浏览器的一种。实战案列pyppeteer实战案例

    更多相关内容
  • 01前言想着爬取『豆瓣』的用户和电影数据进行『挖掘』,分析用户和电影之间以及各自之间的关系,数据量起码是万级别的。但是在爬取过程中遇到了反爬机制,因此这里给大家分享一下如何解决爬虫的反爬问...

    01

    前言

    想着爬取『豆瓣』的用户和电影数据进行『挖掘』,分析用户和电影之间以及各自之间的关系,数据量起码是万级别的。

    但是在爬取过程中遇到了反爬机制,因此这里给大家分享一下如何解决爬虫的反爬问题?(以豆瓣网站为例)

    02

    问题分析

    起初代码

    headers = {
                'Host':'movie.douban.com',
                'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
                'cookie':'bid=uVCOdCZRTrM; douban-fav-remind=1; __utmz=30149280.1603808051.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); __gads=ID=7ca757265e2366c5-22ded2176ac40059:T=1603808052:RT=1603808052:S=ALNI_MYZsGZJ8XXb1oU4zxzpMzGdK61LFA; _pk_ses.100001.4cf6=*; __utma=30149280.1867171825.1603588354.1603808051.1612839506.3; __utmc=30149280; __utmb=223695111.0.10.1612839506; __utma=223695111.788421403.1612839506.1612839506.1612839506.1; __utmz=223695111.1612839506.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=223695111; ap_v=0,6.0; __utmt=1; dbcl2="165593539:LvLaPIrgug0"; ck=ZbYm; push_noty_num=0; push_doumail_num=0; __utmv=30149280.16559; __utmb=30149280.6.10.1612839506; _pk_id.100001.4cf6=e2e8bde436a03ad7.1612839506.1.1612842801.1612839506.',
                'accept': 'image/avif,image/webp,image/apng,image/*,*/*;q=0.8',
                'accept-encoding': 'gzip, deflate, br',
                'accept-language': 'zh-CN,zh;q=0.9',
                'upgrade-insecure-requests': '1',
                #'referer':'',
            } 
    url = "https://movie.douban.com/subject/24733428/reviews?start=0"
    r = requests.get(url, headers=headers)
    

    上面是基本的爬虫代码,在requests里面设置headers(包含cookie),如果没有反爬机制的话,可以正常爬取数据。

    但是『豆瓣』网站有反爬机制!!

    爬取就10几页之后,就出现这个验证!!

    更关键的是:验证之后接着爬取,几秒后又出现这个,即使设置几秒爬取一次也无法解决!

    03

    解决方案

    方案猜想

    根据多年的爬虫经验,首先想到的是设置IP代理,这样就相当于不同用户在爬取网站,因此就通过ip代理去尝试,看看能否解决『豆瓣』的反爬机制。

    获取大量IP代理

    如果单纯设置一个IP代理,那样跟咱们之前在自己电脑上爬取没有什么区别,因此需要大量的IP代理,通过随机抽取的方式去使用IP代理,这样可以避免同一IP去爬取被『豆瓣』反爬机制禁爬。

    IP代理正常来说,很贵,作为白嫖党,这里使用免费ip代理(亲测可用

    白嫖过程

    https://h.shenlongip.com/index/index.html
    

    白嫖的IP代理平台是:神龙Http,(这里不是广告,只是觉得可以白嫖,跟大家分享)

    注册之后,可以免费获取1000个IP代理(详细过程就不介绍了,重点如何使用IP代理解决反爬问题~

    这样我们就可以将提取的IP代理放到文本文件中。

    设置IP代理

    读取IP代理

    iplist=[]
    with open("ip代理.txt") as f:
        iplist = f.readlines()
    

    刚刚已经将ip全部保存到文本文件中,现在读取出来放到iplist中

    随机抽取IP代理

    #获取ip代理
    def getip():
        proxy= iplist[random.randint(0,len(iplist)-1)]
        proxy = proxy.replace("\n","")
        proxies={
            'http':'http://'+str(proxy),
            #'https':'https://'+str(proxy),
        }
        return proxies
    

    通过random函数,可以在iplist 代理集合中,随机抽取IP代理,并封装成proxies格式(requests的ip代理规定格式)

    注解:这里https被注释掉了,因为我这里的ip代理是http,所以有https的话则报错!

    IP代理代码

    headers = {
                'Host':'movie.douban.com',
                'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
                'cookie':'bid=uVCOdCZRTrM; douban-fav-remind=1; __utmz=30149280.1603808051.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); __gads=ID=7ca757265e2366c5-22ded2176ac40059:T=1603808052:RT=1603808052:S=ALNI_MYZsGZJ8XXb1oU4zxzpMzGdK61LFA; _pk_ses.100001.4cf6=*; __utma=30149280.1867171825.1603588354.1603808051.1612839506.3; __utmc=30149280; __utmb=223695111.0.10.1612839506; __utma=223695111.788421403.1612839506.1612839506.1612839506.1; __utmz=223695111.1612839506.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=223695111; ap_v=0,6.0; __utmt=1; dbcl2="165593539:LvLaPIrgug0"; ck=ZbYm; push_noty_num=0; push_doumail_num=0; __utmv=30149280.16559; __utmb=30149280.6.10.1612839506; _pk_id.100001.4cf6=e2e8bde436a03ad7.1612839506.1.1612842801.1612839506.',
                'accept': 'image/avif,image/webp,image/apng,image/*,*/*;q=0.8',
                'accept-encoding': 'gzip, deflate, br',
                'accept-language': 'zh-CN,zh;q=0.9',
                'upgrade-insecure-requests': '1',
                #'referer':'',
            }
    url = "https://movie.douban.com/subject/24733428/reviews?start=0"
    r = requests.get(url, proxies=getip(), headers=headers, verify=False)
    

    加了IP代理之后,爬取了几百页也没有遇到过验证问题。轻松爬取万级别的数据没问题。

    已经爬取了8677条数据,一直没有验证出现,程序还在继续运行~~~

    时间间隔

    如果还是遇到验证机制,可以添加时间间隔,在爬取每一页的时候,先让程序暂停几秒(自定义)

    time.sleep(random.randint(3,5))
    

    random.randint(3,5)是随机生成3~5之间的数字,因此程序在爬取一次后就随机暂停3~5秒。这样也是一个有效防止触发反爬机制。

    04

    总结

    1. 讲解了通过IP代理时间间隔去解决反爬验证问题

    2. 白嫖可用的IP代理

    3. 爬取好的数据将会进一步分析和挖掘,本文就讲解如何解决爬虫的反爬问题(毕竟大家时间宝贵,都是碎片化阅读,一下子太多内容难易消化)。

    如果你觉得文章还不错,请大家点赞分享留言,因为这将是我持续输出更多优质文章的最强动力!

    各种开源源码获取方式

    识别文末二维码,回复:开源源码

    ------------- 推荐文章 -------------

    1.python爬取淘宝全部『螺蛳粉』数据,看看你真的了解螺蛳粉吗?


    2.爬取淘宝热卖商品并可视化分析,看看大家都喜欢买什么!


    3.python窃取摄像头照片(摄像头拍照+邮箱发送+打包exe)


    4.王者荣耀白晶晶皮肤1小时销量突破千万!分析网友评论我发现了原因

    展开全文
  • 爬虫之反爬防御selenium.zip selenium这个爬虫利器,想必大家都用过.那作为网站一方如何反爬防御它呢?
  • 最近因工程需要,需要爬取大量数据,期间遇到一系列问题,特此记录 问题一:ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接 解决方案: import requests if __name__ =...Agent来避免被反爬

    最近因工程需要,需要爬取大量数据,期间遇到一系列问题,特此记录

    问题一:ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接

    解决方案:

    import requests
    
    if __name__ =="__main__":
        try:   
            # 请求的api
            query = ("...")      
            # timeout (读取时间 连接时间)
            r = requests.get(query,timeout=(100,300)).json()
        except requests.exceptions.RequestException as e:
            print(e)
            print('失败')
            #继续接下来的操作 假如在不停记录数据的话可以记录一个None值          
     

    简单来说就是用try except包围起来。

    对于需要爬取批量的数据来说,这是一个很好的解决方案。只是需要注意except中写入遇到错误时的方案,然后在后续处理数据的时候再对缺失值处理即可。

    虽然也有人说加入time.sleep就行了,但是经本人鉴定,在要爬取上万甚至上亿条数据的数据的时候,这也是行不通的,就算设置为十秒也会有问题,而且这样效率实在是太低了...

    问题二:urllib.error.URLError: <urlopen error [Errno 11001] getaddrinfo failed>

    解决方案:

    #ua_list是个User-Agent的集合
    ua_list = ['Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1',
                'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0',
                'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
            ]
    headers = {'User-Agent': random.choice(ua_list)}
    # timeout (读取时间 连接时间)
    #query为你要爬取的api
    query = ("...")  
    r = requests.get(query,timeout=(200,300),headers=headers).json()

    通过更换User-Agent来避免被反爬

    展开全文
  • 我们都知道Python用来爬数据,为了不让自家的数据别人随意的爬走,你知道怎么反爬吗?今天播妞带着大家一起见识见识常见的反爬技术。 首先我们来看一下爬虫程序和反爬虫之间的一张逻辑图: 以下说4种网站反爬虫...

    我们都知道Python用来爬数据,为了不让自家的数据被别人随意的爬走,你知道怎么反爬吗?今天播妞带着大家一起见识见识常见的反爬技术。

    首先我们来看一下爬虫程序和反爬虫之间的一张逻辑图:
    在这里插入图片描述
    以下说4种网站反爬虫方式。

    1.通过User-Agent来控制访问

    无论是浏览器还是爬虫程序,在向服务器发起网络请求的时候,都会发过去一个头文件:headers, 表明身份。

    对于爬虫程序来说,最需要注意的字段就是:User-Agent

    很多网站都会建立 user-agent白名单,只有属于正常范围的user-agent才能够正常访问。

    解决方法:

    可以自己设置一下user-agent,或者更好的是,可以从一系列的user-agent里随机挑出一个符合标准的使用。

    2.通过JS脚本来防止爬虫

    举个例子:如果想爬取某个网站,在请求之前,它会有一个验证页面来验证你是否机器。

    它是怎么实现的呢:

    他会通过js代码生成一大段随机的数字,然后要求浏览器通过js的运算得出这一串数字的和,再返回给服务器。

    解决方法:

    使用PhantomJS

    • PhantomJS是一个Python包,他可以在没有图形界面的情况下,完全模拟一个”浏览器“,js脚本验证什么的再也不是问题了。

    3.通过IP限制来反爬虫

    如果一个固定的ip在短暂的时间内,快速大量的访问一个网站,那自然会引起注意,管理员可以通过一些手段把这个ip给封了,爬虫程序自然也就做不了什么了。

    解决方法:

    比较成熟的方式是:IP代理池

    简单的说,就是通过IP代理,从不同的IP进行访问,这样就不会被封掉IP了。

    可是IP代理的获取本身就是一个很麻烦的事情,网上有免费和付费的,但是质量都层次不齐。如果是企业里需要的话,可以通过自己购买集群云服务来自建代理池。

    def get_ip_poll():
    ‘’’
    模拟代理池
    返回一个字典类型的键值对,
    ‘’’
    ip_poll = [“http://xx.xxx.xxx.xxx:8000”,
    “http://xx.xxx.xxx.xxx:8111”,
    “http://xx.xxx.xxx.xxx:802”,
    “http://xx.xxx.xxx.xxx:9922”,
    “http://xx.xxx.xxx.xxx:801”]
    addresses = {}
    addresses[‘http’] = ip_poll[random.randint(0, len(ip_poll))]
    return addresses

    4.通过robots.txt来限制爬虫

    世界上做爬虫最大最好的就是Google了,搜索引擎本身就是一个超级大的爬虫,Google开发出来爬虫24h不间断的在网上爬取着新的信息,并返回给数据库,但是这些搜索引擎的爬虫都遵守着一个协议:robots.txt

    robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛)。此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。robots.txt应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用robots元数据(Metadata,又称元数据)。robots.txt协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。注意robots.txt是用字符串比较来确定是否获取URL,所以目录末尾有与没有斜杠“/”表示的是不同的URL。robots.txt允许使用类似"Disallow: *.gif"这样的通配符[1][2]。

    当然在特定情况下,比如说我们爬虫的获取网页的速度,和人类浏览网页是差不多的,这并不会给服务器造成太大的性能损失,在这种情况下,我们是可以不用恪守 robots协议的。

    以上4种反爬方式,你学会了吗?

    展开全文
  • 记录常见反爬的处理方法
  • 【导语】我们在爬取数据中,会遇到字体乱码的下,其实是字体加密,本篇文章主要解决字体解密这种反爬方式。 1.在浏览器打开58同城网址进入北京租房 2.点击检查,找到房租价格对应位置,发现源码中价格部分是乱码,但是...
  • 在爬虫中如果遇到了cookie的反爬如何处理? 手动处理  在抓包工具中捕获cookie,将其封装在headers中  应用场景:cookie没有有效时长且不是动态变化 自动处理  使用session机制  使用场景:动态变化的cookie  ...
  • 目录 一、一句话核心 二、我经常用的反反爬技术: 2.1 模拟请求头 ..."爬虫越像人为操作,越不会检测到反爬。" 二、我经常用的反反爬技术: 2.1 模拟请求头 request header,其中最关键的一项,User
  • selenium + chromedriver 被反爬的解决方法

    万次阅读 多人点赞 2018-09-01 12:57:19
    问题背景:这个问题是...讲实话,这还是第一次用硒被反爬的,于是进行大规模的测试对比。  同台机器,用铬浏览器正常访问是不用跳转到登陆界面的,所以不是IP的问题。再用提琴手抓包对比了一下两个请求头,请求头...
  • 爬虫反爬反爬破解总结

    千次阅读 2019-02-19 16:12:17
    这里将自己收集的,遇到的反爬机制进行简单的记录和简单的分析,如果有大佬路过,看到理解不正确的地方,希望可以指出来,学习进步,在此感激不尽。 正文 最基础的记录一下标题 1.header反爬 抓包copy一份,header...
  • 大家可以去添加上看一下~ 最近看到有人再问豆瓣登录采集影评导致封号的事情,豆瓣我以前也封过,到现在也没有解封 依据用户管理细则,此帐号已永久停用。停用时间:2017-09-29 如有疑问,请发送邮件到help@...
  • 别慌,JS反爬怎么办???? Python爬虫120例更新
  • 遇到字体反爬如何处理在爬虫中往往会碰到一些自定义字体的反爬,也就是在打开一个页面的时候,我们是可以看到对应的在页面是看的到的数据的,但是,通过检查发现在element中,我们是看不到真实的数据的,比如在猫眼...
  • from selenium import webdriver from lxml import etree from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver....
  • 爬虫之简单反爬虫措施和解决方法

    千次阅读 2018-07-18 10:21:15
    0x01 常见的反爬虫  这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫。在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下。  从功能上来讲,爬虫一般分为...
  • 一些简单常见的网站反爬策略和解决办法

    千次阅读 多人点赞 2022-04-24 09:43:57
    1.User-Agent(请求时header中的一个属性) 用户代理(User Agent,简称 UA),是一个特殊字符串头,使得...但有时候使用了UA,觉得网站没有什么其他反爬手段了,就是没有返回正常或完整的数据时,原因就有可能..
  • 爬虫中的那些反爬虫措施以及解决方法

    千次阅读 多人点赞 2020-12-07 11:12:28
    对于一些网站来说,它会检查我们发送的请求中所携带的UserAgent字段,如果非浏览器,就会识别为爬虫,一旦识别出来, 我们的爬虫也就无法正常爬取数据了。 解决方法   收集常见的useragent作为配置文件,...
  • 二 Headers and referer 反爬机制 headers进行反爬是最常见的反爬虫策略。还有一些网站会对 Referer (上级链接)进行检测(机器行为不太可能通过链接跳转实现) headers知识汇总 User-Agent会告诉网站服务器,访问...
  • 写了这么多年爬虫了,经常还是会撞上反爬机制。虽然大多数时候都能解决,但是毕竟反爬机制多种多样,有时候遇到一个许久不见的反爬机制,也会感到手生,一时想不上来应对方法,而浪费不少时间。最近写了不少爬虫,接...
  • 当我们在爬取数据时,难免会碰到限制,今天就来教你伪造反爬技术!!1.Headers限制这应该是最常见的,最基本的反爬虫手段,主要是初步判断你是否是真实的浏览器在操作。这个一般很好解决,把浏览器中的Headers信息...
  • 我们知道百度其实就是一个爬虫,但是对方的服务器是没有对百度进行反爬的,所以为了防止对方服务器的反爬,我们在爬取网站的时候要尽可能地模拟我们使用的浏览器。 请求头 headers = { 'Origin': '...
  • Agent字段来反爬,如果我们没有设置请求头,那么headers默认是python这样就会出现访问失败、没有权限等原因,如果去伪造一个请求头是可以避开得,不过如果短时间内频繁使用同一个User-Agent访问可能会检测出来导致...
  • headers方向判断User-Agent、判断Referer、判断Cookie。将浏览器的headers信息全部添加进去注意:Accept-Encoding;gzip,deflate需要注释掉 转载于:https://www.cnblogs.com/sea-stream/p/11192534.html...
  • 爬虫进阶:常见的反爬手段和解决思路1 服务器反爬的原因2 服务器常反什么样的爬虫3 反爬虫领域常见的一些概念4 反爬的三个方向5 常见基于身份识别进行反爬5.1 通过headers字段来反爬5.2 通过请求参数来反爬6 常见...
  • 购(bai)买(piao)IP 条条大路通罗马,自己的 IP 封了不能用,就得买别人的 IP 当然也是可以白嫖的,点击下方图片进入网站,注册登录之后,可以每天白嫖10个1-5分钟的ip,如果需要更多,就只能自己买了,看起来...
  • 1、了解 服务器反爬的原因; 2、了解 服务器常反什么样的爬虫; 3、了解 反爬虫领域常见的一些概念; 4、了解 反爬的三个方向; 5、了解 常见基于身份识别进行反爬; 6、了解 常见基于爬虫行为进行反爬; 7、了解 ...
  • 拉勾网的反爬介绍和解决方法(更新时间:2019/2/20) 目录直达: 文章目录拉勾网的反爬介绍和解决方法(更新时间:2019/2/20)1. 前言2. 简述3. 反爬介绍3.1、对于职位的详情页和公司的详情页的反爬:3.2、对于职位...
  • 爬虫中遇到的js反爬技术

    千次阅读 多人点赞 2020-02-26 16:22:48
    明白了这个过程,我们不难拿出对策,几乎不需要研究JS内容(JS也有可能对点击链接进行修改哦)就可以绕过这个反爬策略,无非是在访问链接前先访问一下cl.gif即可。关键是要研究cl.gif后的参数,把这些参数都带上就...
  • 文章目录1. 习惯性唠叨点啥2. 什么造就了爬虫3. 为什么要反爬虫4. 反反爬虫的权重5. 高级的反爬手段6. 爬虫的发展方向7. ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 837
精华内容 334
关键字:

被反爬怎么办