我们经常会写一
些网络爬虫,想必大家都会有一个感受,写爬虫虽然不难,但是反爬处理却很难,因为现在大部分的网站都有自己的反爬机制,所以我们要爬取这些数据会比较难。但是,每一种反爬机制其实我们都会有相应的解决方案,作为爬虫方的我们,重点需要处理这些反爬机制,所以,今天我们在这里就为大家分析常见的反爬策略以及破解的手段。

1. 知己知彼-常见的反爬策略有哪些?

首先,既然要破解这些常见的反爬策略,就首先需要知道常见的反爬策略有哪些,所谓知己知彼,百战百胜。
常见的反爬策略主要有这些:
A. 有些网站会通过用户代理对爬虫进行限制,只要不是浏览器访问或者一直都是某个浏览器访问,那么就限制该用户不能对网站进行访问;
遇到这种情况,我们一般会采用用户代理池的方式进行解决,我们将在2中进行详细讲解。
B. 还有些网站会通过用户访问站点时的ip进行限制,比如某一个ip在短时间内大量的访问该网站上的网页,则封掉该ip,封掉之后使用该IP就无法访问该站点了;
如果遇到这种情况,我们一般会通过IP代理池的方式进行解决,难点在于如何找到可靠的代理IP并构建好IP代理池,我们将在3中进行详细讲解。
C. 除此之外,有的网站会通过验证码对用户的访问请求进行限制,比如当一个用户多次访问该站点之后,会出现验证码,输入验证码之后才可以继续访问,而怎么样让爬虫自动的识别验证码是一个关键问题;
如果遇到验证码从而阻挡了爬虫的运行,我们可以使用验证码自动识别的方式去处理验证码,我们将在4中进行详细讲解。
D. 还有的网站会通过数据屏蔽的方式进行反爬,比如用户访问时出现的数据并不会出现在源码中,此时这些数据会隐藏在js文件中,以此避免爬虫对这些数据的抓取。 如果遇到这种情况,我们一般会采用抓包分析去找到被屏蔽的数据,并自动获取。我们将在5中进行详细讲解。

2. 解决UA限制-浏览器伪装与用户代理池构建实战

我们先来为大家讲解如何解决UA限制。刚才已经提到,我们可以采用用户代理池构建的方式来解决这个问题。有新朋友可能会问,为什么采用用户代理就能够解决UA限制呢? 原理是这样的,我们不妨打开任意一个网页并按F12调用调试工具,然后在传递的数据中会发现头信息中有如下所示的一项信息:
在这里插入图片描述
这一项字段为User-Agent,也就是我们俗称的用户代理(UA),对方服务器就是通过这一项字段的内容来识别我们访问的终端是什么的。不同浏览器的User-Agent的值是不一样的,我们可以使用不同浏览器的User-Agent的值构建为一个池子,然后每次访问都随机调用该池子中的一个UA,这样,也就意味着我们每次访问都使用的是不同的浏览器,这样的话,对方的服务器就很难通过用户代理来识别我们是否是爬虫了。
那么用户代理池应该怎么构建呢?我们以Scrapy爬虫为案例进行讲解。
在Scrapy里面,如果我们需要使用用户代理池,就需要使用下载中间件,所谓下载中间件,就是处于爬虫和从互联网中下载网页中间的一个部件。
首先我们在爬虫项目中建立一个文件作为下载中间件,名字随意,只需要在设置文件中设置为对应的即可。比如在此,我们建立了一个名为“downloader_middlerwares.py”的文件,如下所示:
在这里插入图片描述
然后在该文件中写入如下代码:

import random
from qna.settings import UAPOOLS
from scrapy.contrib.downloadermiddleware.useragent import UserAgentMiddlewareclass Uagt(UserAgentMiddleware):def __init__(self,ua=''):self.user_agent = uadef process_request(self,request,spider):thisua=random.choice(UAPOOLS)self.user_agent=thisuaprint("当前使用的用户代理是:"+thisua)request.headers.setdefault('User-Agent',thisua)

上述代码中,基本意思为:首先导入对应需要的模块,其中UAPOOLS是在设置文件中设置的用户代理池中各用户代理(我们稍后再设置),然后导入用户代理对应的中间件类UserAgentMiddleware,然后建立一个自定义类并继承该用户代理中间件类,在主方法process_request中,我们首先从UAPOOLS中随机选择一个用户代理,然后通过self.user_agent=thisua设置好对应的用户代理,并通过request.headers.setdefault(‘User-Agent’,thisua)在头文件中添加上该用户代理,那么在每次网站的时候,都会随机的从用户代理池中选择一个用户代理,并以该用户代理进行访问,这个时候,对方服务器就会认为我们每次访问都是不同的浏览器。
然后,我们需要在设置文件中构建用户代理池,如下所示:

UAPOOLS=["Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0","Mozilla/5.0 (Windows NT 6.1; rv:49.0) Gecko/20100101 Firefox/49.0","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",]

当然我们也可以在用户代理池中添加更多用户代理,构建好用户代理池之后,我们需要在设置文件中开启刚才设置的对应的中间件,如下所示:

DOWNLOADER_MIDDLEWARES = {'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': 124,'qna.downloader_middlerwares.Uagt': 125,
}

这样,对应的用户代理其就会生效,我们运行之后如下所示,可以看到,只采用了如下所示的用户代理进行爬取。
在这里插入图片描述

3. 解决IP限制-构建稳定可靠的IP代理池

接下来我们为大家讲解如何解决IP限制。
我们知道,在访问对方网站的时候,有时对方网站会通过我们的ip信息对我们进行识别,如果频繁访问的话很可能会把我们这个ip封掉。我们在使用爬虫自动的抓取大量信息的时候,通常都会由于访问过于频繁被禁掉ip,当然有些朋友会采用拨号的方式来切换本机电脑的ip,但始终是治标不治本。
此时我们可以通过代理ip池解决。我们知道,使用某一个代理ip去访问一个网站,在该网站的服务器中看到的ip就是对应的代理ip,所以当我们本机的ip被禁之后,我们使用代理ip去访问该网站就可以访问,但是如果只有一个代理ip,那么很可能代理ip也被禁掉。
此时,我们可以使用多个代理ip组建成一个池子,每次访问都从该池子中随机选择一个ip出来进行访问,那么这样,对方服务器就很难通过IP限制的方式对我们进行屏蔽了。那么代理ip应该怎么找呢?我们可以直接通过下面代码中的对应地址去申请代理ip。
其次,在实践中我们研究发现,国外的代理ip有效的程度会更高,所以我们待会会使用国外的代理ip进行实验,同时也建议各位朋友使用国外的代理ip构建代理ip池。那么我们怎么构建代理ip池呢?我们可以这样做:
首先,建立一个下载中间件(各用户代理池构建时所创建的中间件类似,名字同样自定义),在此我们创建的下载中间件文件如下所示:
在这里插入图片描述
然后在该中间件中编写如下程序:

import urllib.request
from scrapy.contrib.downloadermiddleware.httpproxy import HttpProxyMiddlewareIPPOOLS=urllib.request.urlopen("http://tpv.daxiangdaili.com/ip/?tid=559126871522487&num=1&foreign=only").read().decode("utf-8","ignore")class Ippl(HttpProxyMiddleware):def __init__(self, ip=''):self.ip=ipdef process_request(self, request,spider):print("当前使用的代理IP是:"+str(IPPOOLS))request.meta["proxy"] = "http://" + str(IPPOOLS)

在该程序中,我们使用daxiangdaili.com提供的代理ip,foreign=only代表只是用国外的代理ip,因为在实践中得出的经验是国外的代理ip有效的可能性会比较高,我们每次都从该接口中获取一个代理ip,然后通过request.meta[“proxy”] = “http://” + str(IPPOOLS)将该代理ip添加到meta中,此时该代理ip生效。
然后,我们还需要在设置文件中开启该下载中间件,如下所示:

DOWNLOADER_MIDDLEWARES = {'qna.downloader_middlerwares.Ippl': 121,'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware':123,
}

随后,我们可以运行对应爬虫,结果如下所示:
在这里插入图片描述
可以看到此时使用代理ip:107.170.26.74:8088对网站进行爬取。

4. 解决验证码限制-验证码三种处理手段及实战讲解

接下来我们为大家讲解,如何解决验证码限制。
我们使用爬虫爬取一些网站的时候,经常会遇到验证码,那么遇到验证码之后应该怎么处理呢? 一般来说,遇到验证码时,处理思路有三种:

半自动识别
通过接口自动识别
通过机器学习等知识自动识别

由于第三种方法涉及AI领域的新知识,所以第三种方法在此不具体讲解(我也不会),在此,我们主要会为大家讲解如何使用前两种方式去处理验证码。
首先为大家讲解如何通过半自动识别的方式去处理验证码,我们以豆瓣登陆爬虫为例进行讲解。比如,在登录豆瓣时,我们经常会遇到如下所示的验证码:
在这里插入图片描述
那么此时如果通过半自动处理的方式来做,我们可以这样:
先爬一遍登录页,然后得到验证码图片所在的网址,并将该验证码图片下载到本地,然后等待输入,此时我们可以在本地查看该验证码图片,并输入对应的验证码,然后就可以自动登录。
通过半自动处理的方式登录豆瓣网站,完整代码如下所示,关键部分一给出注释,关键点就在于找到验证码图片所在的地址并下载到本地,然后等待我们手动输入并将输入结果传递给豆瓣服务器。

import ssl
import os
import scrapy
import urllib.request
from scrapy.http import Request,FormRequest
ssl._create_default_https_context=ssl._create_unverified_contextclass LoginspdSpider(scrapy.Spider):name = "loginspd"allowed_domains = ["douban.com"]#设置头信息变量,供下面的代码中模拟成浏览器爬取header = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0"}#编写start_requests()方法,第一次会默认调取该方法中的请求def start_requests(self):#首先爬一次登录页,然后进入回调函数parse()return [Request("https://accounts.douban.com/login", meta={"cookiejar": 1}, callback=self.parse)]def parse(self, response):#获取验证码图片所在地址,获取后赋给captcha变量,此时captcha为一个列表captcha=response.xpath('//img[@id="captcha_image"]/@src').extract()#因为登录时有时网页有验证码,有时网页没有验证码# 所以需要判断此时是否需要输入验证码,若captcha列表中有元素,说明有验证码信息if len(captcha)>0:print("此时有验证码")#设置将验证码图片存储到本地的本地地址localpath="D:/我的教学/Python/CSDN-Python爬虫/captcha.png"#将服务器中的验证码图片存储到本地,供我们在本地直接进行查看urllib.request.urlretrieve(captcha[0], filename=localpath)print("请查看本地图片captcha.png并输入对应验证码:")#通过input()等待我们输入对应的验证码并赋给captcha_value变量captcha_value=input()#设置要传递的post信息data={#设置登录账号,格式为账号字段名:具体账号"form_email":"weisuen007@163.com",#设置登录密码,格式为密码字段名:具体密码,读者需要将账号密码换成自己的#因为笔者完成该项目后已经修改密码"form_password":"weijc7789",#设置验证码,格式为验证码字段名:具体验证码"captcha-solution":captcha_value,#设置需要转向的网址,由于我们需要爬取个人中心页,所以转向个人中心页"redir":"https://www.douban.com/people/151968962/",}#否则说明captcha列表中没有元素,即此时不需要输入验证码信息else:print("此时没有验证码")#设置要传递的post信息,此时没有验证码字段data={"form_email":"weisuen007@163.com","form_password":"weijc7789","redir": "https://www.douban.com/people/151968962/",}print("登录中…")#通过FormRequest.from_response()进行登陆return [FormRequest.from_response(response,#设置cookie信息meta={"cookiejar": response.meta["cookiejar"]},#设置headers信息模拟成浏览器headers=self.header,#设置post表单中的数据formdata=data,#设置回调函数,此时回调函数为next()callback=self.next,)]def next(self,response):print("此时已经登录完成并爬取了个人中心的数据")#此时response为个人中心网页中的数据#以下通过Xpath表达式分别提取个人中心中该用户的相关信息#网页标题Xpath表达式xtitle="/html/head/title/text()"#日记标题Xpath表达式xnotetitle="//div[@class='note-header pl2']/a/@title"#日记发表时间Xpath表达式xnotetime="//div[@class='note-header pl2']//span[@class='pl']/text()"#日记内容Xpath表达式xnotecontent="//div[@class='note']/text()"#日记链接Xpath表达式xnoteurl="//div[@class='note-header pl2']/a/@href"#分别提取网页标题、日记标题、日记发表时间、日记内容、日记链接title=response.xpath(xtitle).extract()notetitle = response.xpath(xnotetitle).extract()notetime = response.xpath(xnotetime).extract()notecontent = response.xpath(xnotecontent).extract()noteurl = response.xpath(xnoteurl).extract()print("网页标题是:"+title[0])#可能有多篇日记,通过for循环依次遍历for i in range(0,len(notetitle)):print("第"+str(i+1)+"篇文章的信息如下:")print("文章标题为:"+notetitle[i])print("文章发表时间为:" + notetime[i])print("文章内容为:" + notecontent[i])print("文章链接为:" + noteurl[i])print("------------")

然后我们可以运行该程序,如下所示:
在这里插入图片描述
可以看到,此时会提示我们输入验证码,我们在本地可以看到验证码如下所示:
在这里插入图片描述
随后我们输入该验证码,然后按回车键,此时便可正常登陆,如下所示:
在这里插入图片描述
自动识别:
显然,通过半自动的处理方式不足以处理验证码,此时,我们可以通过接口的方式,自动的识别验证码并进行处理,这样就完全自动化操作了。
具体方式如下,首先我们在云打码注册一个账号并申请对应接口,然后将程序验证码处理部分做以下修改:

cmd=“D:/python27/python D:/python27/yzm/YDMPythonDemo.py”
r = os.popen(cmd)
captcha_value = r.read()
r.close()
print(“此时已经自动处理验证码完毕!处理的验证码结果为:”+str(captcha_value))

然后运行该程序,结果如下所示:
在这里插入图片描述
可以看到,事实已经能够自动的识别验证码并能够成功登陆。
接口自动处理验证码的完整代码如下所示:

# -*- coding: utf-8 -*-
import ssl
import os
import scrapy
import urllib.request
from scrapy.http import Request,FormRequest
ssl._create_default_https_context=ssl._create_unverified_contextclass LoginspdSpider(scrapy.Spider):name = "loginspd"allowed_domains = ["douban.com"]#设置头信息变量,供下面的代码中模拟成浏览器爬取header = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0"}#编写start_requests()方法,第一次会默认调取该方法中的请求def start_requests(self):#首先爬一次登录页,然后进入回调函数parse()return [Request("https://accounts.douban.com/login", meta={"cookiejar": 1}, callback=self.parse)]def parse(self, response):#获取验证码图片所在地址,获取后赋给captcha变量,此时captcha为一个列表captcha=response.xpath('//img[@id="captcha_image"]/@src').extract()#因为登录时有时网页有验证码,有时网页没有验证码# 所以需要判断此时是否需要输入验证码,若captcha列表中有元素,说明有验证码信息if len(captcha)>0:print("此时有验证码")#设置将验证码图片存储到本地的本地地址localpath="D:/我的教学/Python/CSDN-Python爬虫/captcha.png"#将服务器中的验证码图片存储到本地,供我们在本地直接进行查看urllib.request.urlretrieve(captcha[0], filename=localpath)'''print("请查看本地图片captcha.png并输入对应验证码:")#通过input()等待我们输入对应的验证码并赋给captcha_value变量captcha_value=input()'''cmd="D:/python27/python D:/python27/yzm/YDMPythonDemo.py"r = os.popen(cmd)captcha_value = r.read()r.close()print("此时已经自动处理验证码完毕!处理的验证码结果为:"+str(captcha_value))#设置要传递的post信息data={#设置登录账号,格式为账号字段名:具体账号"form_email":"weisuen007@163.com",#设置登录密码,格式为密码字段名:具体密码,读者需要将账号密码换成自己的#因为笔者完成该项目后已经修改密码"form_password":"weijc7789",#设置验证码,格式为验证码字段名:具体验证码"captcha-solution":captcha_value,#设置需要转向的网址,由于我们需要爬取个人中心页,所以转向个人中心页"redir":"https://www.douban.com/people/151968962/",}#否则说明captcha列表中没有元素,即此时不需要输入验证码信息else:print("此时没有验证码")#设置要传递的post信息,此时没有验证码字段data={"form_email":"weisuen007@163.com","form_password":"weijc7789","redir": "https://www.douban.com/people/151968962/",}print("登录中…")#通过FormRequest.from_response()进行登陆return [FormRequest.from_response(response,#设置cookie信息meta={"cookiejar": response.meta["cookiejar"]},#设置headers信息模拟成浏览器headers=self.header,#设置post表单中的数据formdata=data,#设置回调函数,此时回调函数为next()callback=self.next,)]def next(self, response):print("此时已经登录完成并爬取了个人中心的数据")#此时response为个人中心网页中的数据#以下通过Xpath表达式分别提取个人中心中该用户的相关信息#网页标题Xpath表达式xtitle="/html/head/title/text()"#日记标题Xpath表达式xnotetitle="//div[@class='note-header pl2']/a/@title"#日记发表时间Xpath表达式xnotetime="//div[@class='note-header pl2']//span[@class='pl']/text()"#日记内容Xpath表达式xnotecontent="//div[@class='note']/text()"#日记链接Xpath表达式xnoteurl="//div[@class='note-header pl2']/a/@href"#分别提取网页标题、日记标题、日记发表时间、日记内容、日记链接title=response.xpath(xtitle).extract()notetitle = response.xpath(xnotetitle).extract()notetime = response.xpath(xnotetime).extract()notecontent = response.xpath(xnotecontent).extract()noteurl = response.xpath(xnoteurl).extract()print("网页标题是:"+title[0])#可能有多篇日记,通过for循环依次遍历for i in range(0,len(notetitle)):print("第"+str(i+1)+"篇文章的信息如下:")print("文章标题为:"+notetitle[i])print("文章发表时间为:" + notetime[i])print("文章内容为:" + notecontent[i])print("文章链接为:" + noteurl[i])print("------------")

上述代码中关键部分已给出注释。

5. 解决屏蔽数据问题-抓包分析及异步数据加载分析实战(解决JS\Ajax等隐藏数据获取问题)

除此之外,有些网站还会通过数据屏蔽的方式进行反爬。如果是通过这种方式尽反爬,我们可以使用Fiddler进行抓包,分析出数据所在的真实地址,然后直接爬取该数据即可。
当然,Fiddler默认是不能抓取HTTPS协议的,如果要抓取HTTPS协议,需要进行如下设置:
打开Fiddler,点击“Tools–Fiddler Options–HTTPS”,把下方的全勾上,如下图所示:
在这里插入图片描述
然后,点击Action,选择将CA证书导入到桌面,即第二项,导出后,点击上图的ok保存配置。
在这里插入图片描述
然后在桌面上就有了导出的证书,如下所示:
在这里插入图片描述
随后,我们可以在浏览器中导入该证书。我们打开火狐浏览器,打开“选项–高级–证书–导入”,选择桌面上的证书,导入即可。随后,Fiddler就可以抓HTTPS协议的网页了。如下图所示。
在这里插入图片描述
能够抓取HTTPS的数据之后,我们便可以对大多数网站进行抓包分析。
由于抓包分析的内容比较多,所以我们为大家配了配套视频进行讲解,配套视频中讲解了如何解决淘宝网站商品数据的屏蔽问题。

6. 其他反爬策略及应对思路

我们使用上面几种反爬处理的方式,基本上可以应付大多数网站了。当然,有些网站的数据所在地址是随机生成的,根本没有规律可循,如果遇到这种情况,我们采用PhantomJS将对应的地址获取到,再交给爬虫处理即可。
随着时代的发展,也会出现越来越多的反爬方式,我们掌握了这些基础之后,在遇到新的反爬方式的时候,稍微研究便可以处理了。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 用户画像计算更新

    日萌社人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)3.1 用户画像计算更新学习目标业务流程图:3.1.1 为什么要进行用户画像要做精准推送同样可以使用多种推荐算法,例如:基于用户协同推荐、基于内容协同的推荐等其他的推荐方式,但是…...

    2024/4/24 13:12:20
  2. 6/17 Deep Face SR with Iterative Collaboration between Attentive Recovery and Landmark Estimation

    CVPR2020 Deep Face SR with Iterative Collaboration between Attentive Recovery and Landmark EstimationAttention恢复与关键点估计之间具有迭代协作的深度人脸超分辨率Abstract现有方法无法充分利用先验知识,因为人脸先验信息(例如关键点 component map)是由低分辨率或…...

    2024/4/24 13:12:26
  3. (2015.02) 玩的就是资产! - 比特币与游戏货币体系

    玩的就是资产! - 比特币与游戏货币体系 上个月在知乎上看到一个问题: 如果使用电子加密貨幣來充當遊戲貨幣體系的一環,會對遊戲有什麽影響? 这个问题很有意思,当时我就随手点了关注。趁着春节假期还没结束,今天俺就写几段来抛砖引玉吧:) 如有偏颇之处,还请大牛指正。 这篇…...

    2024/4/24 13:12:18
  4. flink实战-实时计算平台通过api停止流任务

    文章目录背景案例详解命令行停止api实现 背景随着flink在流计算领域越来越火,很多公司基于flink搭建了自己的实时计算平台,用户可以在实时平台通过jar或者sql的方式来开发、上线、下线、运维flink任务,避免了构建flink任务的复杂性,使更多不会flink的人能够使用flink。 平时…...

    2024/4/24 13:12:19
  5. day02_python语法

    1.pyhton里的整数数据类型int float complex str bool list tuple dict set整型就是整数.计算机只能保存二进制 0 和 1,同时支持八进制/十进制/十六进制,在python中都能表示a = 98 # 默认数字都是十进制数字.98就是十进制的九十八 # a = 0b12101012 # 二进制最大的就是1,不不能…...

    2024/4/24 13:12:16
  6. 国内大厂都在使用哪些移动跨平台框架

    自从移动应用开发兴起以来,不少公司和开发者就在不断的探索移动跨平台开发技术,以适应移动应用高速迭代的需求 。纵观当前的移动跨平台方案,总结一下无外乎三大类:一种是使用原生内置的浏览器加载HTML5的Hybrid技术,采用此方案的主要有Cordova、Ionic和微信小程序;另一种…...

    2024/4/24 13:12:15
  7. “区块链+游戏”产业专题报告 (干货版)

    “区块链+游戏”产业专题报告 (干货版)火币的“区块链+游戏”报告对从业者是有价值的参考,本文是其脱水干货版,供快速参考。 由于去掉了一般性阐述,可能会在可读性上稍差一些,但好处是信息比较集中和紧凑,便于核心内容提取 原文见:火币区块链产业专题报告:游戏篇——“新…...

    2024/4/24 13:12:15
  8. 200616:知识清单

    遇到的问题搜狗改快捷键electron : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\electron.ps1,因为在此系统上禁止运行脚本。 管理员身份打开输入set-ExecutionPolicy RemoteSigned 选择Y 或者A ,就好了H5html优化手段CSSinline-block 节点出现间隔布局方式fle…...

    2024/4/24 13:12:13
  9. 计算机网络第六章复习笔记(个人保存)

    应用层1.域名系统1)各主机应用进程通信与协同工作来完成任务2)3)DNS是什么?①com表示一个商业机构②taobao是该商业机构的名称③表示该机构中的一个名为WWW的计算机PS:从右至左可以确定为淘宝公司的一台服务器4)域名空间①其他的域 + 他们的“父域”com + 最顶级的根域名…...

    2024/4/24 13:12:12
  10. 面试题合集

    面试题合集mysql索引失效的常见情况?explain优化方法?like查询优化方法?数据库各种数据类型最大存储大小?B树和B+树的数据结构?redisredis支持哪些数据类型?分别适用于哪些场景?穿透,击穿,雪崩?相比memcached有哪些优势?算法排序算法?具体实现?最深/最广优先算法?…...

    2024/4/24 13:12:12
  11. 5G介绍

    5G 专业名字叫IMT-2020 3G 叫IMT-2000 4G叫IMT-Advance IMT:国际移动通信系统 5G要求必须满足eMBB,mMTC,URLLC 增强型MBB:AI,高带宽 海量连接的物联网业务:车联网:联网数量 超高可靠性与超低时延业务:时延 NGMN:运营商组织 /////////////////////////////////////////// 3D全…...

    2024/4/24 13:12:11
  12. PTA 装箱问题 (20分) 暴力模拟

    7-13 装箱问题 (20分) 假设有N项物品,大小分别为s​1​​、s​2​​、…、s​i​​、…、s​N​​,其中s​i​​为满足1≤s​i​​≤100的整数。要把这些物品装入到容量为100的一批箱子(序号1-N)中。装箱方法是:对每项物品, 顺序扫描箱子,把该物品放入足以能够容下它的第…...

    2024/4/24 13:12:10
  13. 大学英语A4 | 上海师范大学《英汉互译》笔记

    第一单元笔记 verb->noun or adjective我一看见他就紧张。 Every sight of him makes me nervous. 油漆未干 Wet Paint形和意人要脸,树要皮 The face is as important to a man as the bark to a tree.impersonal ->personalAn idea suddenly stuck to me. 我突然想到一…...

    2024/4/15 4:09:37
  14. 安装NVM、安装Node.js

    NVM 是 Mac 下的 node 管理工具管,管理不同版本node和npm,有点类似管理 Ruby 的 rvm. 1 安装nvm1.1 终端执行下边命令brew install nvm1.2 为了让你直接在shell中使用nvm指令,必须创建nvm工作目录,并且在.bash_profile加入一下两行export NVM_DIR=~/.nvm . $(brew --prefix…...

    2024/4/15 4:09:36
  15. Linux和Mac系统下安装和升级Node.js和npm

    安装Node.js Linux环境,以Ubuntu为例: sudo apt-get install nodejs Mac OS X: 安装Homebrew 安装Node: brew install node node -v 升级Node.js Mac OS X下执行如下命令: #先查看node.js版本: $ node -v#清除node.js的cache: $ sudo npm cache clean -f#安装 n 工具,…...

    2024/4/15 4:09:35
  16. Mac安装ionic及创建helloworld!

    标题搭建ionic的工作环境,为混合开发迈出第一步 一、安装Node.js 1.1 为什么要安装Node.js? 安装ionic,为什么要安装node.js?好多教程是直接让你开始安装,但是几乎没有找到,为什么要安装node.js,为了满足好奇心,了解一下吧,要安装ionic,需要用到npm(包管理工具)命令,而…...

    2024/4/15 4:09:33
  17. [node]mac卸载并重装nodejs以及推荐nvm安装

    参考: https://stackoverflow.com/questions/11177954/how-do-i-completely-uninstall-node-js-and-reinstall-from-beginning-mac-os-xbrew uninstall node # or `brew uninstall --force node` which removes all versions brew cleanup sudo rm -rf /usr/local/lib/node /us…...

    2024/4/15 4:09:32
  18. node js 安装 以及 nvm 使用 在mac 电脑

    这部分主要记录了node js 如何安装,以及nvm (node version manager) 安装使用,在苹果电脑上。安装node js 1. 在node js 的官网上直接下载 (https://nodejs.org/) ,直接按照 一般然间安装即可 2. 在 ~/.bash_profle 中添加打开Terminal ,输入 $source ~/.bash_profile 3.…...

    2024/4/22 5:11:55
  19. 【Node.js】mac下升级node.js到最新版

    第一步,查看当前版本node -v第二步,清除node.js的cache:sudo npm cache clean -f第三步,安装node.js版本管理工具,n,他的名字就叫nsudo npm install -g n第四步,安装最新的稳定版sudo n stable第五步,查看更新后的版本node -v第六步,顺手更新下npm的版本sudo npm inst…...

    2024/4/25 23:10:42
  20. Mac安装NodeJS的默认路径

    下载pkg安装包:node-v10.6.0.pkg执行默认安装,路径信息如下:This package will install: • Node.js v10.6.0 to /usr/local/bin/node • npm v6.1.0 to /usr/local/bin/npm安装完成后This package has installed:Node.js v10.6.0 to /usr/local/bin/nodenpm v6.1.0 to /usr…...

    2024/4/15 4:09:34

最新文章

  1. kerberos:介绍

    文章目录 一、介绍二、kerberos框架1、名词解释2、框架 三、优缺点四、其他认证机制1、SSL2、OAuth3、LDAP 一、介绍 Kerberos是一种计算机网络授权协议,主要用于在非安全网络环境中对个人通信进行安全的身份认证。这个协议由麻省理工学院(MIT&#xff…...

    2024/4/26 17:22:03
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 在 Visual Studio Code (VSCode) 中隐藏以 . 开头的文件

    打开VSCode。 按下Ctrl ,快捷键打开设置。您也可以点击屏幕左下角的齿轮图标,然后选择“Settings”。 在设置搜索框中,键入files.exclude。 在找到的Files: Exclude项中,点击Add Pattern按钮来添加一个新的模式,或者直接在搜索…...

    2024/4/22 21:08:05
  4. 【THM】Protocols and Servers(协议和服务器)-初级渗透测试

    介绍 这个房间向用户介绍了一些常用的协议,例如: HTTP协议文件传输协议POP3邮件传输协议IMAP每个协议的每个任务都旨在帮助我们了解底层发生的情况,并且通常被优雅的GUI(图形用户界面)隐藏。我们将使用简单的 Telnet 客户端来使用上述协议进行“对话”,以充分了解GUI客户…...

    2024/4/26 8:55:10
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/25 11:51:20
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/25 18:39:24
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/25 18:38:39
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/25 18:39:23
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/25 18:39:22
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/25 18:39:22
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/25 18:39:20
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/25 16:48:44
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/26 16:00:35
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/25 18:39:16
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/25 0:00:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/25 4:19:21
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/25 18:39:12
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/25 2:10:52
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/25 18:39:00
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/25 13:19:01
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/25 18:38:58
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/25 18:38:57
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57