新版 Android 微云不给权限不让用?

新版 Android 微云不给权限不让用?
App Ops 也治不了,死活要电话权限,这个权限该给吗?

edsheeran 1
edsheeran 2019-03-02 16:41:38 +08:00 via iPhone
dropbox
google drive
microsoft onedrive
mega
ltux 2
ltux 2019-03-02 16:57:31 +08:00
咦,怎么实现干翻 App Ops 的?
miao 3
miao 2019-03-02 18:43:44 +08:00 via Android
试试旧版?
mengyang624 4
mengyang624 2019-03-02 18:55:13 +08:00
试试 XPrivacyLua
nanaw 5
nanaw 2019-03-02 20:53:20 +08:00 via Android ❤️ 2
当然不该给。美团也这样,二次校验获取到的数据了。那么 appops 和 xprivacy 的非专业版也不行了。可用试试 xapm 的隐匿(不太靠谱),或者是有伪装机型功能的容器分身。
BTW,做这功能的程序猿 /产品请?‍?‍?‍?爆炸
orangeade 6
orangeade 2019-03-02 21:15:34 +08:00 via Android ❤️ 2
virtual Xposed / island,看来腾讯要作恶到底了,不少应用都检测 appops
732870147 7
732870147 2019-03-02 22:56:18 +08:00
看来我得考虑下一台手机入 iPhone 了…
reself 8
reself 2019-03-02 23:11:58 +08:00 via Android
妈卖批的马化腾
yjxlovejsn 9
yjxlovejsn 2019-03-02 23:38:19 +08:00 ❤️ 1
我就是因为不给不让用才换的苹果
bclerdx 10
bclerdx 2019-03-03 07:36:34 +08:00 via Android
没辙啊

alfchin 11
alfchin 2019-03-03 18:15:24 +08:00 via Android
谷歌爸爸在后面撑腰,不给权限就别用了
evam 12
evam 2019-03-04 14:05:47 +08:00
iPhone

你知道怎么利用利用爬虫爬网页(Python代码)必看

手教你利用爬虫爬网页(Python代码)%title插图%num

本文主要分为两个部分:一部分是网络爬虫的概述,帮助大家详细了解网络爬虫;另一部分是HTTP请求的Python实现,帮助大家了解Python中实现HTTP请求的各种方式,以便具备编写HTTP网络程序的能力。

01

网络爬虫概述

接下来从网络爬虫的概念、用处与价值和结构等三个方面,让大家对网络爬虫有一个基本的了解。

1. 网络爬虫及其应用

随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战,网络爬虫应运而生。网络爬虫(又被称为网页蜘蛛、网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。下面通过图3-1展示一下网络爬虫在互联网中起到的作用:

640?wx_fmt=png

▲图3-1 网络爬虫

网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫。实际的网络爬虫系统通常是几种爬虫技术相结合实现的。

搜索引擎(Search Engine),例如传统的通用搜索引擎baidu、Yahoo和Google等,是一种大型复杂的网络爬虫,属于通用性网络爬虫的范畴。但是通用性搜索引擎存在着一定的局限性:

不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。

通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。

万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频、视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。

通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。

为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。

聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择地访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。

说完了聚焦爬虫,接下来再说一下增量式网络爬虫。增量式网络爬虫是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。

和周期性爬行和刷新页面的网络爬虫相比,增量式爬虫只会在需要的时候爬行新产生或发生更新的页面,并不重新下载没有发生变化的页面,可有效减少数据下载量,及时更新已爬行的网页,减小时间和空间上的耗费,但是增加了爬行算法的复杂度和实现难度。

例如:想获取赶集网的招聘信息,以前爬取过的数据没有必要重复爬取,只需要获取更新的招聘数据,这时候就要用到增量式爬虫。

*后说一下深层网络爬虫。Web页面按存在方式可以分为表层网页和深层网页。表层网页是指传统搜索引擎可以索引的页面,以超链接可以到达的静态网页为主构成的Web页面。深层网络是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的Web页面。

例如用户登录或者注册才能访问的页面。可以想象这样一个场景:爬取贴吧或者论坛中的数据,必须在用户登录后,有权限的情况下才能获取完整的数据。

2. 网络爬虫结构

下面用一个通用的网络爬虫结构来说明网络爬虫的基本工作流程,如图3-4所示。

640?wx_fmt=png

▲图3-4 网络爬虫结构

网络爬虫的基本工作流程如下:

首先选取一部分精心挑选的种子URL。

将这些URL放入待抓取URL队列。

从待抓取URL队列中读取待抓取队列的URL,解析DNS,并且得到主机的IP,并将URL对应的网页下载下来,存储进已下载网页库中。此外,将这些URL放进已抓取URL队列。

分析已抓取URL队列中的URL,从已下载的网页数据中分析出其他URL,并和已抓取的URL进行比较去重,*后将去重过的URL放入待抓取URL队列,从而进入下一个循环。

02

HTTP请求的Python实现

通过上面的网络爬虫结构,我们可以看到读取URL、下载网页是每一个爬虫必备而且关键的功能,这就需要和HTTP请求打交道。接下来讲解Python中实现HTTP请求的三种方式:urllib2/urllib、httplib/urllib以及Requests。

1. urllib2/urllib实现

urllib2和urllib是Python中的两个内置模块,要实现HTTP功能,实现方式是以urllib2为主,urllib为辅。

1.1 首先实现一个完整的请求与响应模型

urllib2提供一个基础函数urlopen,通过向指定的URL发出请求来获取数据。*简单的形式是:

import urllib2
response=urllib2.urlopen(‘http://www.zhihu.com’)
html=response.read()
print html

其实可以将上面对http://www.zhihu.com的请求响应分为两步,一步是请求,一步是响应,形式如下:

import urllib2
# 请求
request=urllib2.Request(‘http://www.zhihu.com’)
# 响应
response = urllib2.urlopen(request)
html=response.read()
print html

上面这两种形式都是GET请求,接下来演示一下POST请求,其实大同小异,只是增加了请求数据,这时候用到了urllib。示例如下:

import urllib
import urllib2
url = ‘http://www.xxxxxx.com/login’
postdata = {‘username’ : ‘qiye’,
‘password’ : ‘qiye_pass’}
# info 需要被编码为urllib2能理解的格式,这里用到的是urllib
data = urllib.urlencode(postdata)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
html = response.read()

但是有时会出现这种情况:即使POST请求的数据是对的,但是服务器拒*你的访问。这是为什么呢?问题出在请求中的头信息,服务器会检验请求头,来判断是否是来自浏览器的访问,这也是反爬虫的常用手段。

1.2 请求头headers处理

将上面的例子改写一下,加上请求头信息,设置一下请求头中的User-Agent域和Referer域信息。

import urllib
import urllib2
url = ‘http://www.xxxxxx.com/login’
user_agent = ‘Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)’
referer=’http://www.xxxxxx.com/’
postdata = {‘username’ : ‘qiye’,
‘password’ : ‘qiye_pass’}
# 将user_agent,referer写入头信息
headers={‘User-Agent’:user_agent,’Referer’:referer}
data = urllib.urlencode(postdata)
req = urllib2.Request(url, data,headers)
response = urllib2.urlopen(req)
html = response.read()

也可以这样写,使用add_header来添加请求头信息,修改如下:

import urllib
import urllib2
url = ‘http://www.xxxxxx.com/login’
user_agent = ‘Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)’
referer=’http://www.xxxxxx.com/’
postdata = {‘username’ : ‘qiye’,
‘password’ : ‘qiye_pass’}
data = urllib.urlencode(postdata)
req = urllib2.Request(url)
# 将user_agent,referer写入头信息
req.add_header(‘User-Agent’,user_agent)
req.add_header(‘Referer’,referer)
req.add_data(data)
response = urllib2.urlopen(req)
html = response.read()

对有些header要特别留意,服务器会针对这些header做检查,例如:

User-Agent:有些服务器或Proxy会通过该值来判断是否是浏览器发出的请求。

Content-Type:在使用REST接口时,服务器会检查该值,用来确定HTTP Body中的内容该怎样解析。在使用服务器提供的RESTful或SOAP服务时,Content-Type设置错误会导致服务器拒*服务。常见的取值有:application/xml(在XML RPC,如RESTful/SOAP调用时使用)、application/json(在JSON RPC调用时使用)、application/x-www-form-urlencoded(浏览器提交Web表单时使用)。

Referer:服务器有时候会检查防盗链。

1.3 Cookie处理

urllib2对Cookie的处理也是自动的,使用CookieJar函数进行Cookie的管理。如果需要得到某个Cookie项的值,可以这么做:

import urllib2
import cookielib
cookie = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open(‘http://www.zhihu.com’)
for item in cookie:
print item.name+’:’+item.value

但是有时候会遇到这种情况,我们不想让urllib2自动处理,我们想自己添加Cookie的内容,可以通过设置请求头中的Cookie域来做:

import urllib2
opener = urllib2.build_opener()
opener.addheaders.append( ( ‘Cookie’, ’email=’ + “[email protected]” ) )
req = urllib2.Request( “http://www.zhihu.com/” )
response = opener.open(req)
print response.headers
retdata = response.read()

1.4 Timeout设置超时

在Python2.6之前的版本,urllib2的API并没有暴露Timeout的设置,要设置Timeout值,只能更改Socket的全局Timeout值。示例如下:

import urllib2
import socket
socket.setdefaulttimeout(10) # 10 秒钟后超时
urllib2.socket.setdefaulttimeout(10) # 另一种方式

在Python2.6及新的版本中,urlopen函数提供了对Timeout的设置,示例如下:

import urllib2
request=urllib2.Request(‘http://www.zhihu.com’)
response = urllib2.urlopen(request,timeout=2)
html=response.read()
print html

1.5 获取HTTP响应码

对于200 OK来说,只要使用urlopen返回的response对象的getcode()方法就可以得到HTTP的返回码。但对其他返回码来说,urlopen会抛出异常。这时候,就要检查异常对象的code属性了,示例如下:

import urllib2
try:
response = urllib2.urlopen(‘http://www.google.com’)
print response
except urllib2.HTTPError as e:
if hasattr(e, ‘code’):
print ‘Error code:’,e.code

1.6 重定向

urllib2默认情况下会针对HTTP 3XX返回码自动进行重定向动作。要检测是否发生了重定向动作,只要检查一下Response的URL和Request的URL是否一致就可以了,示例如下:

import urllib2
response = urllib2.urlopen(‘http://www.zhihu.cn’)
isRedirected = response.geturl() == ‘http://www.zhihu.cn’

如果不想自动重定向,可以自定义HTTPRedirectHandler类,示例如下:

import urllib2
class RedirectHandler(urllib2.HTTPRedirectHandler):
def http_error_301(self, req, fp, code, msg, headers):
pass
def http_error_302(self, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_301(self, req, fp, code,
msg, headers)
result.status = code
result.newurl = result.geturl()
return result
opener = urllib2.build_opener(RedirectHandler)
opener.open(‘http://www.zhihu.cn’)

1.7 Proxy的设置

在做爬虫开发中,必不可少地会用到代理。urllib2默认会使用环境变量http_proxy来设置HTTP Proxy。但是我们一般不采用这种方式,而是使用ProxyHandler在程序中动态设置代理,示例代码如下:

import urllib2
proxy = urllib2.ProxyHandler({‘http’: ‘127.0.0.1:8087’})
opener = urllib2.build_opener([proxy,])
urllib2.install_opener(opener)
response = urllib2.urlopen(‘http://www.zhihu.com/’)
print response.read()

这里要注意的一个细节,使用urllib2.install_opener()会设置urllib2的全局opener,之后所有的HTTP访问都会使用这个代理。这样使用会很方便,但不能做更细粒度的控制,比如想在程序中使用两个不同的Proxy设置,这种场景在爬虫中很常见。比较好的做法是不使用install_opener去更改全局的设置,而只是直接调用opener的open方法代替全局的urlopen方法,修改如下:

import urllib2
proxy = urllib2.ProxyHandler({‘http’: ‘127.0.0.1:8087’})
opener = urllib2.build_opener(proxy,)
response = opener.open(“http://www.zhihu.com/”)
print response.read()

2. httplib/urllib实现

httplib模块是一个底层基础模块,可以看到建立HTTP请求的每一步,但是实现的功能比较少,正常情况下比较少用到。在Python爬虫开发中基本上用不到,所以在此只是进行一下知识普及。下面介绍一下常用的对象和函数:

创建HTTPConnection对象:

class httplib.HTTPConnection(host[, port[, strict[, timeout[, source_address]]]])。

发送请求:

HTTPConnection.request(method, url[, body[, headers]])。

获得响应:

HTTPConnection.getresponse()。

读取响应信息:

HTTPResponse.read([amt])。

获得指定头信息:

HTTPResponse.getheader(name[, default])。

获得响应头(header, value)元组的列表:

HTTPResponse.getheaders()。

获得底层socket文件描述符:

HTTPResponse.fileno()。

获得头内容:

HTTPResponse.msg。

获得头http版本:

HTTPResponse.version。

获得返回状态码:

HTTPResponse.status。

获得返回说明:

HTTPResponse.reason。

接下来演示一下GET请求和POST请求的发送,首先是GET请求的示例,如下所示:

import httplib
conn =None
try:
conn = httplib.HTTPConnection(“www.zhihu.com”)
conn.request(“GET”, “/”)
response = conn.getresponse()
print response.status, response.reason
print ‘-‘ * 40
headers = response.getheaders()
for h in headers:
print h
print ‘-‘ * 40
print response.msg
except Exception,e:
print e
finally:
if conn:
conn.close()

POST请求的示例如下:

import httplib, urllib
conn = None
try:
params = urllib.urlencode({‘name’: ‘qiye’, ‘age’: 22})
headers = {“Content-type”: “application/x-www-form-urlencoded”
, “Accept”: “text/plain”}
conn = httplib.HTTPConnection(“www.zhihu.com”, 80, timeout=3)
conn.request(“POST”, “/login”, params, headers)
response = conn.getresponse()
print response.getheaders() # 获取头信息
print response.status
print response.read()
except Exception, e:
print e
finally:
if conn:
conn.close()

3. 更人性化的Requests

Python中Requests实现HTTP请求的方式,是本人*力推荐的,也是在Python爬虫开发中*为常用的方式。Requests实现HTTP请求非常简单,操作更加人性化。

Requests库是第三方模块,需要额外进行安装。Requests是一个开源库,源码位于:

GitHub: https://github.com/kennethreitz/requests

希望大家多多支持作者。

使用Requests库需要先进行安装,一般有两种安装方式:

使用pip进行安装,安装命令为:pip install requests,不过可能不是*新版。

直接到GitHub上下载Requests的源代码,下载链接为:

https://github.com/kennethreitz/requests/releases

将源代码压缩包进行解压,然后进入解压后的文件夹,运行setup.py文件即可。

如何验证Requests模块安装是否成功呢?在Python的shell中输入import requests,如果不报错,则是安装成功。如图3-5所示。

640?wx_fmt=png

▲图3-5 验证Requests安装

3.1 首先还是实现一个完整的请求与响应模型

以GET请求为例,*简单的形式如下:

import requests
r = requests.get(‘http://www.baidu.com’)
print r.content

大家可以看到比urllib2实现方式的代码量少。接下来演示一下POST请求,同样是非常简短,更加具有Python风格。示例如下:

import requests
postdata={‘key’:’value’}
r = requests.post(‘http://www.xxxxxx.com/login’,data=postdata)
print r.content

HTTP中的其他请求方式也可以用Requests来实现,示例如下:

r = requests.put(‘http://www.xxxxxx.com/put’, data = {‘key’:’value’})
r = requests.delete(‘http://www.xxxxxx.com/delete’)
r = requests.head(‘http://www.xxxxxx.com/get’)
r = requests.options(‘http://www.xxxxxx.com/get’)

接着讲解一下稍微复杂的方式,大家肯定见过类似这样的URL:

http://zzk.cnblogs.com/s/blogpost?Keywords=blog:qiyeboy&pageindex=1

就是在网址后面紧跟着“?”,“?”后面还有参数。那么这样的GET请求该如何发送呢?肯定有人会说,直接将完整的URL带入即可,不过Requests还提供了其他方式,示例如下:

import requests
payload = {‘Keywords’: ‘blog:qiyeboy’,’pageindex’:1}
r = requests.get(‘http://zzk.cnblogs.com/s/blogpost’, params=payload)
print r.url

通过打印结果,我们看到*终的URL变成了:

http://zzk.cnblogs.com/s/blogpost?Keywords=blog:qiyeboy&pageindex=1

3.2 响应与编码

还是从代码入手,示例如下:

import requests
r = requests.get(‘http://www.baidu.com’)
print ‘content–>’+r.content
print ‘text–>’+r.text
print ‘encoding–>’+r.encoding
r.encoding=’utf-8’
print ‘new text–>’+r.text

其中r.content返回的是字节形式,r.text返回的是文本形式,r.encoding返回的是根据HTTP头猜测的网页编码格式。

输出结果中:“text–>”之后的内容在控制台看到的是乱码,“encoding–>”之后的内容是ISO-8859-1(实际上的编码格式是UTF-8),由于Requests猜测编码错误,导致解析文本出现了乱码。Requests提供了解决方案,可以自行设置编码格式,r.encoding=’utf-8’设置成UTF-8之后,“new text–>”的内容就不会出现乱码。

但是这种手动的方式略显笨拙,下面提供一种更加简便的方式:chardet,这是一个非常优秀的字符串/文件编码检测模块。安装方式如下:

pip install chardet

安装完成后,使用chardet.detect()返回字典,其中confidence是检测精确度,encoding是编码形式。示例如下:

import requests
r = requests.get(‘http://www.baidu.com’)
print chardet.detect(r.content)
r.encoding = chardet.detect(r.content)[‘encoding’]
print r.text

直接将chardet探测到的编码,赋给r.encoding实现解码,r.text输出就不会有乱码了。

除了上面那种直接获取全部响应的方式,还有一种流模式,示例如下:

import requests
r = requests.get(‘http://www.baidu.com’,stream=True)
print r.raw.read(10)

设置stream=True标志位,使响应以字节流方式进行读取,r.raw.read函数指定读取的字节数。

3.3 请求头headers处理

Requests对headers的处理和urllib2非常相似,在Requests的get函数中添加headers参数即可。示例如下:

import requests
user_agent = ‘Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)’
headers={‘User-Agent’:user_agent}
r = requests.get(‘http://www.baidu.com’,headers=headers)
print r.content

3.4 响应码code和响应头headers处理

获取响应码是使用Requests中的status_code字段,获取响应头使用Requests中的headers字段。示例如下:

import requests
r = requests.get(‘http://www.baidu.com’)
if r.status_code == requests.codes.ok:
print r.status_code# 响应码
print r.headers# 响应头
print r.headers.get(‘content-type’)# 推荐使用这种获取方式,获取其中的某个字段
print r.headers[‘content-type’]# 不推荐使用这种获取方式
else:
r.raise_for_status()

上述程序中,r.headers包含所有的响应头信息,可以通过get函数获取其中的某一个字段,也可以通过字典引用的方式获取字典值,但是不推荐,因为如果字段中没有这个字段,第二种方式会抛出异常,*种方式会返回None。

r.raise_for_status()是用来主动地产生一个异常,当响应码是4XX或5XX时,raise_for_status()函数会抛出异常,而响应码为200时,raise_for_status()函数返回None。

3.5 Cookie处理

如果响应中包含Cookie的值,可以如下方式获取Cookie字段的值,示例如下:

import requests
user_agent = ‘Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)’
headers={‘User-Agent’:user_agent}
r = requests.get(‘http://www.baidu.com’,headers=headers)
# 遍历出所有的cookie字段的值
for cookie in r.cookies.keys():
print cookie+’:’+r.cookies.get(cookie)

如果想自定义Cookie值发送出去,可以使用以下方式,示例如下:

import requests
user_agent = ‘Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)’
headers={‘User-Agent’:user_agent}
cookies = dict(name=’qiye’,age=’10’)
r = requests.get(‘http://www.baidu.com’,headers=headers,cookies=cookies)
print r.text

还有一种更加高级,且能自动处理Cookie的方式,有时候我们不需要关心Cookie值是多少,只是希望每次访问的时候,程序自动把Cookie的值带上,像浏览器一样。Requests提供了一个session的概念,在连续访问网页,处理登录跳转时特别方便,不需要关注具体细节。使用方法示例如下:

import Requests
oginUrl = ‘http://www.xxxxxxx.com/login’
s = requests.Session()
#首先访问登录界面,作为游客,服务器会先分配一个cookie
r = s.get(loginUrl,allow_redirects=True)
datas={‘name’:’qiye’,’passwd’:’qiye’}
#向登录链接发送post请求,验证成功,游客权限转为会员权限
r = s.post(loginUrl, data=datas,allow_redirects= True)
print r.text

上面的这段程序,其实是正式做Python开发中遇到的问题,如果没有*步访问登录的页面,而是直接向登录链接发送Post请求,系统会把你当做非法用户,因为访问登录界面时会分配一个Cookie,需要将这个Cookie在发送Post请求时带上,这种使用Session函数处理Cookie的方式之后会很常用。

3.6 重定向与历史信息

处理重定向只是需要设置一下allow_redirects字段即可,例如:

r=requests.get(‘http://www.baidu.com’,allow_redirects=True)

将allow_redirects设置为True,则是允许重定向;设置为False,则是禁止重定向。如果是允许重定向,可以通过r.history字段查看历史信息,即访问成功之前的所有请求跳转信息。示例如下:

import requests
r = requests.get(‘http://github.com’)
print r.url
print r.status_code
print r.history

打印结果如下:

https://github.com/
200
(,)

上面的示例代码显示的效果是访问GitHub网址时,会将所有的HTTP请求全部重定向为HTTPS。

3.7 超时设置

超时选项是通过参数timeout来进行设置的,示例如下:

requests.get(‘http://github.com’, timeout=2)

3.8 代理设置

使用代理Proxy,你可以为任意请求方法通过设置proxies参数来配置单个请求:

import requests
proxies = {
“http”: “http://0.10.1.10:3128”,
“https”: “http://10.10.1.10:1080”,
}
requests.get(“http://example.org”, proxies=proxies)

也可以通过环境变量HTTP_PROXY和HTTPS_PROXY?来配置代理,但是在爬虫开发中不常用。你的代理需要使用HTTP Basic Auth,可以使用http://user:password@host/语法:

proxies = {
“http”: “http://user:[email protected]:3128/”,
}

03

小结

本文主要讲解了网络爬虫的结构和应用,以及Python实现HTTP请求的几种方法。希望大家对本文中的网络爬虫工作流程和Requests实现HTTP请求的方式重点吸收消化。

安卓版长按微信图标弹出菜单了?

Android安卓版长按微信图标弹出菜单了?
1
flywith24 6 小时 8 分钟前
这个叫 Shortcut 表现类似于 iOS 的 3D Touch,不过不是硬件级别的支持。应该是 Android 7.1 以上才能用,也与 Launcher 有关。app 方可以配置 Shortcut 弹出的菜单
FantaMole 2
FantaMole 6 小时 7 分钟前
虽然不知道你用的是什么牌子的,但是我手上的这台 哇喂 mate 的大部分 App 似乎在很早就有长按出菜单的功能了
idyu 3
idyu 6 小时 1 分钟前 ❤️ 9
楼主应该不是惊讶于安卓的这个功能,是惊讶微信居然更新了这个功能,
在大部分 APP 都有这个功能的时候只有微信我行我素了很长一段时间
UnknownR 4
UnknownR 6 小时 0 分钟前
@FantaMole 哈哈哈哇喂就很灵性了,我记得 miui 也有,但是部分 app 适配了才会有
Muniesa 5
Muniesa 6 小时 0 分钟前
试了一下确实有,张小龙终于想起来 Android 有这个功能了
66beta 6
66beta 5 小时 56 分钟前
你这一说,确实啊,长按出现了通知,还是小龙会玩
732870147 7
732870147 5 小时 52 分钟前 via Android
@FantaMole 你是广东人吗,这叫法太逗了
ETO 8
ETO 5 小时 41 分钟前
我草
wolfan 9
wolfan 5 小时 40 分钟前 via Android
这个不是有好久了吗?
zongren 10
zongren 5 小时 39 分钟前 ❤️ 2
我艹,微信居然有了,前几天刚吐槽过,扫个码贼费劲

JeffGe 11
JeffGe 5 小时 30 分钟前 via Android
Google Play 版的微信还没有
DOLLOR 12
DOLLOR 5 小时 29 分钟前 via Android
支付宝很久以前就有 Shortcut,付款比微信快捷,所以我都是用支付宝来支付。
azkaban 13
azkaban 5 小时 27 分钟前
@wolfan 微信,qq,钉钉这几个狗贼一直没有啊,尤其钉钉,经常扫码,还不能放到桌面快捷方式,得点进去扫
secretman 14
secretman 5 小时 25 分钟前
@azkaban 不这样搞,使用时长的 KPI 完成不了啊
honjow 15
honjow 5 小时 20 分钟前
@wolfan 你确定这功能微信有好久了?
twocold0451 16
twocold0451 5 小时 18 分钟前
微信居然有了,但是没找到在哪编辑
also24 17
also24 5 小时 11 分钟前
上个月还在吐槽只有微信不支持,终于加上这功能了啊……
yaocai321 18
yaocai321 4 小时 52 分钟前
微信牛逼。 手动狗头
Macv1994 19
Macv1994 4 小时 44 分钟前
好多软件好像很早就有这个功能了 但是我一般用到这个功能的时候都是卸载的时候
rodrick 20
rodrick 4 小时 39 分钟前
魅族目前好像没有
lxfcool 21
lxfcool 4 小时 38 分钟前
北京申奥成功辣(狗头
Building 22
Building 4 小时 30 分钟前 via iPhone
iOS 按出菜单后可以直接滑动选择,Android 按出菜单后不抬起来滑一下会直接触发编辑桌面…
bankroft 23
bankroft 4 小时 28 分钟前
@JeffGe #11 gp 版还在 7.0?
yylzcom 24
yylzcom 4 小时 18 分钟前
Google Play 的还在 7.0.21 版本,上次更新还是 12 月 24 日

@Building #22 各个 ROM 的行为不一样吧, 魔趣和 LinegeOS 直接就弹出编辑该应用的菜单, 不会触发编辑桌面的行为
dingwen07 25
dingwen07 4 小时 5 分钟前 via Android
@66beta 长按通知是 OneUI 的功能吧
constexpr 26
constexpr 4 小时 0 分钟前 via Android
扫描界面按返回仍停留在微信界面,?哥不够细
rodneya 27
rodneya 3 小时 59 分钟前
从来没用过这个功能。。。
ronman 28
ronman 3 小时 55 分钟前 via Android
@lxfcool 这种功能本身是很早就有了,但是微信就是*近几天刚刚适配
ronman 29
ronman 3 小时 55 分钟前 via Android
@yylzcom play 版昨天推送了更新,但是版本号依然是 7.0.21 ,无可感知的变化
Delbert 30
Delbert 3 小时 32 分钟前 ❤️ 1
@lxfcool 微信上个版本没有,但是北京申奥成功确是 20 年了。

@Livid 这个算是不友好回复了吧
Cusmate 31
Cusmate 3 小时 5 分钟前 via Android
我记得去年有个版本可以长按弹出扫码的快捷方式,后来又取消了
Cusmate 32
Cusmate 3 小时 4 分钟前 via Android
不记得了到底什么版本,是 2019 年的时候
imn1 33
imn1 2 小时 54 分钟前
@DOLLOR #12
微信也很久以前就有快捷进入扫一扫的方式,点开扫一扫,镜头打开,右上角三点,就出现“添加到桌面”的选项
MIUI v11 *新版,顶栏的扫一扫功能开关支持识别微信,不过我还没试过,因为从桌面快捷进入更快一些
66beta 34
66beta 2 小时 40 分钟前
@dingwen07 一加 氢 11
Tink 35
Tink 2 小时 30 分钟前 via Android
play 版不支持
DOLLOR 36
DOLLOR 2 小时 28 分钟前
@imn1
扫码的话,两家都有快捷图标,差不多。但是微信打开付款码就麻烦了,没有快捷图标,还得进入界面还得点点点好几步才出现。
imn1 37
imn1 2 小时 17 分钟前
@DOLLOR #36
这个确实,微信付款码没有快捷,想快挺麻烦的,不过我自己加了手势,想快也不行
Cielsky 38
Cielsky 2 小时 9 分钟前 via Android
是的好像是 8.0.1 适配了
Jooooooooo 39
Jooooooooo 1 小时 33 分钟前
苹果引领潮流.
wangxiaoaer 40
wangxiaoaer 1 小时 2 分钟前
@Jooooooooo #39 我印象中 Android 的长按图标菜单可比什么 3D Touch 早多了,也好用多了。
phpcxy 41
phpcxy 1 小时 1 分钟前
应该是微信支持了吧,挺方便的。
honjow 42
honjow 37 分钟前
@wangxiaoaer Shortcuts 是 android7.1 才加入的功能。然后查到的 7.1 正式版 2016 年 12 月 5 日推送。iOS 的 3dtouch 菜单*早搭载于 iPhone6s 的 iOS9 系统,6s 和 iOS9 都是 2015 年 9 月发布的
honjow 43
honjow 35 分钟前
@lxfcool 申奥成功和微信刚刚增加 Shortcuts 功能有什么关联吗
Vveeb 44
Vveeb 28 分钟前
@Building 经常调出 iOS 的“右键菜单”滑来滑去,感受下马达震动来解压
tankren 45
tankren 24 分钟前
Play 版本还是 7.0.21.。。
DK7S 46
DK7S 23 分钟前
终于有了吗,之前就烦微信少了这个,那现在可以直接把扫一扫,付款码放桌面了

原来 Calendars 5 这么贵的吗…

听好几个朋友推荐的,然后去 App Store 看了一眼,龟龟…198 块…

我还以为是我切错成日区了,用网页打开看了眼还是 198

%title插图%num

所以说这个日历真的这么牛逼值这么多钱的吗,该不会除了我以外所有人都是限免拿的吧???

14 条回复 • 2021-03-23 21:23:26 +08:00

Procumbens 2 天前

Recent Price Changes
$29.99 since Jan 22, ’21
$6.99 for 1150 days Nov 29, ’17
$2.99 for 9 days Nov 20, ’17
$6.99 for 357 days Nov 28, ’16
$2.99 for 5 days Nov 23, ’16
$6.99 for 208 days Apr 29, ’16
Free for 8 days Apr 21, ’16
$6.99 for 117 days Dec 25, ’15
$2.99 for 4 days Dec 21, ’15
$6.99 for 136 days Aug 07, ’15
$2.99 for 3 days Aug 04, ’15
$6.99 for 179 days Feb 05, ’15
$2.99 for 9 days Jan 27, ’15
$6.99 for 32 days Dec 26, ’14
$2.99 for 11 days Dec 15, ’14
$6.99 for 15 days Dec 01, ’14
$2.99 for 4 days Nov 27, ’14
$6.99 for 116 days Aug 03, ’14
$2.99 for 3 days Jul 31, ’14
$6.99 for 64 days May 28, ’14
$2.99 for 8 days May 20, ’14
$6.99 for < 1 day May 19, '14 Free for 2 days May 17, '14 $6.99 for 26 days Apr 22, '14 $2.99 for 13 days Apr 09, '14 $6.99 for 101 days Dec 29, '13 $2.99 for 9 days Dec 20, '13 $6.99 for 18 days Dec 02, '13 $2.99 for 3 days Nov 29, '13 $6.99 before Nov 29, '13 现在这也太贵了……印象中一直是 45 块钱。。 他家东西现在是能推内购就推内购,不能的就调高价(

今天这么一个严重的 Android Webview Crash,没人关注么?

lanskytian · 19 小时 25 分钟前 · 4633 次点击
今天 GP 下发了一个 Webview 的远程配置,导致大面积 APP 因为用了系统 webview 而 Crash,国内倒还好(各种 x5, u4, xweb ),国外一片狼藉,reddit 上各种讨论,Gmail 都挂了。。。。但下午推送了强制更新修复掉了

有大佬有头绪是因为什么么?好像和 CookieManager 有关,但也不排除是 loadurl 的问题。。。。。
第 1 条附言 · 18 小时 36 分钟前
猜测下
有的同学没发生,应该是 google 的配置是灰度更新的,更新了一部分之后,发现有问题了,就停止了,所以没命中;根据后来的强制更新行为,应该是该配置没办法回滚
还有一些国内 app 接了魔改 chromium 的却也崩了的,应该是魔改的 webview 和系统 webview 存在一些数据交互,例如同步 cookie 什么的,多以也挂了
第 2 条附言 · 17 小时 0 分钟前
修复 patch
https://chromium.googlesource.com/chromium/src.git/+log/0f7fcb5c6a3f7204b0c466c4e6b10e921f58bb8d..63164786123068349e6334cf6b45b91740cbdd36?n=1000&pretty=fuller
WebView crash xweb loadurl57 条回复 • 2021-03-24 14:29:49 +08:00
Jooooooooo 1
Jooooooooo 19 小时 20 分钟前
我今天从早上开始手机上很多 app 都出现闪退的状况, 捣鼓一会搞不定之后我就重装了.

结果傍晚看新闻说有 crash 的问题…
kinghly 2
kinghly 19 小时 18 分钟前 via Android
我就说怎么很多 app 突然就闪退了。。
lanskytian 3
lanskytian 19 小时 17 分钟前
@Jooooooooo 做国际化业务的应该今天都有点抓狂,面对着 Crash 率飙升瑟瑟发抖,但是只能等 google 修复
ysc3839 4
ysc3839 19 小时 16 分钟前
没啥好关注的,我又不是做 Android 或浏览器开发的。普通用户知道是谁的锅,如何解决就好了。
另外我手机上反而是 TIM 和企业微信较为频繁弹出停止工作的提示。
lanskytian 5
lanskytian 19 小时 14 分钟前
遇到问题的大佬解决方法就是到 google play 里面升级 webview 到*新…
whypool 6
whypool 19 小时 12 分钟前 via Android
按照这样理解,是不是可以下发一个 feature,手机直接变砖
lanskytian 7
lanskytian 19 小时 9 分钟前
@whypool 严格来讲 google 是有这个能力的,都不知道国内这种 webview “百花齐放”的态势是好是坏了
ReZer0 8
ReZer0 19 小时 9 分钟前
话说有没有大佬科普下 webview 有必要频繁更新吗?我都是*次安装 Google Play 后更新下系统自带的就不动了。
lanskytian 9
lanskytian 19 小时 6 分钟前
@ReZer0 这件事发生之前,肯定是越早更新*新的越好,但现在,咱也说不准,咱也不知道啊;但是看今天这个情况,google play 还是有强制更新的能力的,这个更新就由不得你了……
Anderson997 10
Anderson997 19 小时 6 分钟前
还是 lsp 频道发的才知道,然后打开手机一看,还是 88 版。。。。。。

55380855 11
55380855 18 小时 59 分钟前
我荣耀 10 今天多数常用 App 打不开,我还当手机越坏了,因为近来一直频繁自动重启
后来知乎看到个回答,把 android system webview 停用卸载更新才好了

难道竟不是我手机坏了?
zbttl 12
zbttl 18 小时 57 分钟前
我这边是 vgtime 这种客户端开不开了,我同学是雅虎天气啥的,还好我知道这件事一卸载就好了

另外我和我同学都是傍晚发现这事,然后发现 play 那边有更新,按更新发现进度条根本不动,干脆直接卸载更新
x66 13
x66 18 小时 49 分钟前
我晕,今天太忙没时间逛 v 站摸鱼,早上开始我的微博,知乎,值得买全部闪退,我一整天历经删缓存数据,重启手机,卸载 app 重装都无法解决,差点就准备刷机了,结果是这个原因
lanskytian 14
lanskytian 18 小时 44 分钟前
@x66 腾讯和 UC 的普及率这么低么,我以为国内的 app 都会带上这两家其中一家的内核
cvbnt 15
cvbnt 17 小时 59 分钟前
太坑了,特别是很多游戏也闪退了,过了难受的上午和下午
webshe11 16
webshe11 17 小时 59 分钟前
感谢楼主提醒,我说今天网易云音乐怎么老崩溃
superrichman 17
superrichman 17 小时 33 分钟前 via iPhone
我昨天晚上手动更新的,用 app 没有遇到问题,刚刚看了一下是 89 版
andywiny 18
andywiny 17 小时 25 分钟前 via Android ❤️ 3
原来如此啊,害我以为手机问题,下午紧急下单了一新手机?
Atma 19
Atma 17 小时 19 分钟前 via Android
?早上快迟到,打卡血崩,卸载重装也不行,后来想起来前天晚上 play 里面更新了 Webview,*后 1min 地铁上面打了卡,急死个人
litmxs 20
litmxs 17 小时 15 分钟前 via Android
原来是这个原因,今天招商银行和网易云一直 crash
lanskytian 21
lanskytian 16 小时 59 分钟前 via iPhone
@andywiny 你确定不是蓄谋已久?
zpxshl 22
zpxshl 16 小时 54 分钟前 via Android
国内 app 用自研内核还是很有必要的。
geekvcn 23
geekvcn 16 小时 52 分钟前
我说呢,还把手机重新刷了个机,我*后把 webview 还原到 87 版本就好了
R18 24
R18 16 小时 44 分钟前 via Android
MIUI 炸了一天了,几乎所有 app 都闪退。*后卸载更新解决的
lanskytian 25
lanskytian 16 小时 32 分钟前 via iPhone
@zpxshl 原来觉得魔改其实很卷,为解决碎片化问题引入新的碎片化问题,现在看来这部分工作还是很有意义的
jim9606 26
jim9606 16 小时 13 分钟前
GP 向来都是灰度的,更何况是 Webview 这种基础组件,何况我也不是长期挂着梯子,更新都是手动。
另外好像 play 版微信用的是系统 webview 。

以前遇到过一次怀疑是被 webview 坑的场景是所有小程序打不开,*后解决办法也不是降级 webview 而是降级微信,也不知道是谁的锅。
lanskytian 27
lanskytian 16 小时 7 分钟前 via iPhone
@jim9606 小程序的话,*早是依赖 x5 的,依赖系统 webview 是跑不起来的,后来微信自研内核,现在应该是把 js 引擎单独拆出来了,独立加载,和 webview 解耦了
zpxshl 28
zpxshl 15 小时 56 分钟前 via Android ❤️ 1
@lanskytian 非常有意义。不同 webview 版本,不同 rom 魔改带来的碎片化很恶心的。要是小米华为这些魔改了你还能忍一忍兼容下,魅族这种魔改真的是又不想管,又时不时被用户反馈。 另外所谓的兼容魔改 webview,其实就是各种实验看怎么规避问题,大部分是黑盒。
之前代码一堆注释 xxx 逻辑是为了兼容 xx 系统…
在我看来,自研内核单一个把 webview 版本统一就功不可没了。另外的好处是,出了啥 bug 可以找相关负责人定位,即使是原生 webview 自带的 bug 也可以修。
kkbblzq 29
kkbblzq 15 小时 56 分钟前
早上用的好好的几个应用突然就崩了,比如京东,下班回家 adb 里看了眼 log 去更了下 webview 版本就好了。。。。
hs0000t 30
hs0000t 15 小时 48 分钟前 via Android
扫了一眼,webview 还是 78 版的
divilkcvf 31
divilkcvf 15 小时 46 分钟前
早上好多应用打不开+1,各种 google play 下载的游戏,手机自带的 my phone 和各种后台 service 疯狂弹停止运行,重启都没用,后来去 google play 手动点了全部更新就好了
divilkcvf 32
divilkcvf 15 小时 19 分钟前
@divilkcvf *诡异的是闪退之后点击报告问题,然后报告问题的程序也闪退
applehater 33
applehater 10 小时 42 分钟前 via Android
@jim9606 谷歌的灰度,是可以有匿名信息可以统计更新使用情况吗
JellyBeanX 34
JellyBeanX 6 小时 1 分钟前 via iPhone
我司海外用户不少,大面积的反馈,都建议他们去升级 WebView 了
KevinChan 35
KevinChan 5 小时 48 分钟前 ❤️ 1
说搭载自研内核的,这不就是标准的因噎废食吗?
reed2020 36
reed2020 5 小时 34 分钟前
手机用得少,没发现?
q197 37
q197 5 小时 26 分钟前
@lanskytian 我没有具体看,只是凭外观猜测,play 版微信好像是魔改 chromium,国内是 x5,直接 wenbview 应该没有办法修改长按选择文字的菜单样式吧。而且分页面,应该是公众号和小程序用魔改 chromium,直接打开网页是 webview
lanskytian 38
lanskytian 5 小时 24 分钟前 via iPhone
@KevinChan 倒是也不至于,从稳定性,性能和可拓展性来讲,还是有好处的。而且这已经是个趋势了,国内 app 不用自研内核的感觉很少了,至少头部 app 都
lanskytian 39
lanskytian 5 小时 23 分钟前 via iPhone
@KevinChan 倒是也不至于,从稳定性,性能和可拓展性来讲,还是有好处的。而且这已经是个趋势了,国内 app 不用自研内核的感觉很好少了,至少头部 app 都是
lanskytian 40
lanskytian 5 小时 16 分钟前
@q197 微信也在自研内核 xweb,play 应该是内置了自研的吧
lambdAlan 41
lambdAlan 4 小时 34 分钟前
从昨天开始手机 app 一直闪退,我还以为 realme 更新新系统的锅。。
NEVERCODE 42
NEVERCODE 4 小时 12 分钟前
你们要抓的是 Android,和我安卓有什么关系?
keymao 43
keymao 3 小时 48 分钟前
国内很多 app 都是自封了 X5 内核的 事实证明还是有远见得。

安全和稳定大部分时候还是得靠自己。
wsseo 44
wsseo 3 小时 23 分钟前
国内这个东西都不更新的,所有遇到这个问题的人很少。
someonesnone 45
someonesnone 3 小时 13 分钟前
国内如果你老老实实用,是碰不到这个问题的
honeycomb 46
honeycomb 3 小时 6 分钟前 via Android
我就觉得很奇怪,内地的手机连 play store 都连不上,怎么可能随 play 更新 trichrome webview ?
所以还是要用统一的 webview 。
SunnyCoffee 47
SunnyCoffee 2 小时 33 分钟前
@lambdAlan 你这是原生系统?为啥也会这样,*后解决了么
xcstream 48
xcstream 2 小时 30 分钟前
碎片化想到生物多样性问题。想到有性繁殖产生各种遗传基因组合抵御病毒。
Lonely 49
Lonely 2 小时 18 分钟前 via iPhone
就这么点事情干嘛要关注?
lambdAlan 50
lambdAlan 1 小时 35 分钟前
@SunnyCoffee 我不知道是不是原生系统,手机是 realme x7 pro,解决方案是到 google play 里面升级 webview 到*新
66beta 51
66beta 1 小时 27 分钟前
这楼里碰上闪退的,多半是全天候开着木弟子的,全部抓起来!
lanskytian 52
lanskytian 1 小时 25 分钟前 via iPhone
@66beta 你们要抓的是 Android,和我安卓有什么关系?(doge
StephenHe 53
StephenHe 1 小时 15 分钟前
并没有任何崩溃,一小部分人大惊小怪
qing108 54
qing108 1 小时 12 分钟前
版本 89,没有遇到过问题,稳得很
binux 55
binux 1 小时 7 分钟前 via Android
Crash 藏在 feature 开关下面,测试不完全
g5hdyd 56
g5hdyd 1 小时 3 分钟前
嗯 华为的全局搜索也甭了
Lemeng 57
Lemeng 58 分钟前
看看,还不清楚

服务器被大量 netstat 搞死,求问应该怎么个排查步骤

服务器被大量 netstat 搞死,求问应该怎么个排查步骤
narutots · 5 天前 · 818 次点击
1616128386_1_.jpg

netstat 排查 步骤 服务器9 条回复 • 2021-03-22 09:11:18 +08:00
lsylsy2 1
lsylsy2 5 天前 ❤️ 1
怎么觉得看起来像是伪装成 netstat 等正常程序的挖矿木马
cpstar 2
cpstar 5 天前 ❤️ 1
还有一堆 awk 和 xargs,应该是用管道做什么分析
Shirakawa 3
Shirakawa 5 天前 ❤️ 1
挖矿木马伪装的
crontab -l 看看说不准能发现啥玩意
Lax 4
Lax 4 天前 ❤️ 1
先把执行到程序找到,看看是不是系统自带的 ls -al /proc//
ik 5
ik 4 天前 via iPhone ❤️ 1
常用命令被替换了吧……
GGGG430 6
GGGG430 4 天前 ❤️ 1
strace -p 6887 看看这些进程在干啥
ch2 7
ch2 4 天前 via iPhone ❤️ 1
这个是挖矿病毒
narutots 8
narutots 2 天前
@GGGG430 好的
narutots 9
narutots 2 天前
@Lax 好的

远程桌面中转- 能否分享经验?

*近需要几台国外的 ubuntu 远程桌面来操作业务。

用国内的 windows 远程软件 RDP 连接太慢了。

搜索得到的方案,中转比较适合我,请问大家有这方面的经验吗?

远程 桌面 Ubuntu rdp4 条回复 • 2021-03-21 19:24:03 +08:00
xmumiffy 1
xmumiffy 2 天前 via Android
ucloud 有远程桌面加速
MakeItGreat 2
MakeItGreat 2 天前 via Android
可以用 proxifer 让 rdp 走代理
透明代理也可以
kekxv 3
kekxv 2 天前 via iPhone
ssh
ladypxy 4
ladypxy 2 天前 via iPhone
citrix+ netscaler

反代 gravatar

由于 gravatar 在国内访问困难,导致很多博客搭在国内的博主无**常使用 WordPress 的评论头像。现在就拿良心云反代一下 1 打开腾讯云官网,创建轻量应用服务器,这里我选择的系统是 centos,现在我这里选的是 1h1g 的

( img) https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8f2e3c1429d34c8fa844701a5b956664~tplv-k3u1fbpfcp-watermark.image

2 现在我们安装 lnmp (可以使用腾讯云已有镜像指路-应用镜像-lnmp ) 但是折腾一下不好嘛 233 ~~ lnmp 请在 lnmp.org 进行下载如果下载没反应(一般都有 wget 命令的啦)

请在 ssh 终端输入 yum -y install wget 中途选择 y 就好 安装 lnmp wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz && tar zxf lnmp1.7.tar.gz && cd lnmp1.7 && ./install.sh (安装 lnmp 一键包)可以 lnmp 的简单介绍( L-linux n-nginx m-mysql p-php ) 但是这里我们只需要 nginx,所以安装命令如下 cd/你的安装路径 安装路径内执行./install.sh nginx 安装好 nginx 后反代其文件(示例文件) #PROXY-START /location ~* .(php|jsp|cgi|asp|aspx)${ proxy_pass https://secure.gravatar.com; proxy_set_header Host secure.gravatar.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr;}location /{ proxy_pass https://secure.gravatar.com;(反代的网站) proxy_set_header Host secure.gravatar.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; add_header X-Cache $upstream_cache_status; 辑后放入 nginx 的配置文件夹下(可以在记事本中编辑好后 SFTP 上传) 重启 nginx 配置 SSL 证书 推荐使用腾讯云轻量应用服务器完成此配置,CN2 线路可以确保反代访问流畅

下面讲述宝塔反代方法选择腾讯云轻量应用服务器宝塔镜像

进入宝塔按如下配置填写如下

申请 SSL

验证完成,反代成功! *后我假设你已经完成上述配置假设你已经可以反代 gravatar,反代域名为 www.example.com 如何更换反代源为自己的(以 wordpress,typecho 为例)

WordPress 登录到自己的后台找到主题-主题编辑器找到 fuctions.php (找到以下代码) gravatar_cn($url){ $gravatar_url = array(‘0.gravatar.com/avatar’,’1.gravatar.com/avatar’,’2.gravatar.com/avatar’,’secure.gravatar.com/avatar’); [将反代地址填入上方*.gravatar.com/avatar 替换为你的反代域名] return str_replace( $gravatar_url, akina_option(‘gravatar_proxy’), $url );}if(akina_option(‘gravatar_proxy’)){ add_filter(‘get_avatar_url’, ‘gravatar_cn’, 4);}
LNMP Nginx Gravatar wget6 条回复 • 2021-03-20 18:40:01 +08:00
Steps 1
Steps 4 天前
搞那么麻烦干什么,直接用阿里 CDN 就行了,选择源站为 www.gravatar.com 即可,
aiz 2
aiz 4 天前 via Android
@Steps 害怕,CDN 被打了,天价费用。。
markgor 3
markgor 4 天前 ❤️ 1
V2EX 源 https://cdn.v2ex.com/gravatar/
Loli 源 https://gravatar.loli.net/avatar/
*客族 https://sdn.geekzu.org/avatar/

直接用这些不好吗。。。
littlewing 4
littlewing 4 天前 via iPhone
nginx 配置个 proxy 不就完事了,写那么多废话,有必要吗
而且你这排版,真有人会看?
indev 5
indev 3 天前
我也有一个: https://cdn.frankindev.com/avatar/
Hanada 6
Hanada 3 天前 via Android
@Steps 阿里云 cdn 回源直接 502,我都是找一台海外机反代了再让阿里云 cdn 回源的……

求教 Qnap 想用 OSS 做冷备,如何加密做增量存储?

求教 Qnap 想用 OSS 做冷备,如何加密做增量存储?
kuanos · 3 天前 · 944 次点击
如题,qnap 可以设置 HBS 做计划备份到 OSS,但是想加密备份的话,有什么方法吗?

本人小白只懂得压缩包加密,但是这样就不能做增量存储备份了,求解~
备份 OSS QNAP 加密8 条回复 • 2021-03-23 00:11:47 +08:00
neteroster 1
neteroster 3 天前 ❤️ 1
restic: https://restic.net/
全自动加密备份,支持增量快照,断点续传等功能,非常方便。
支持备份到 OSS,参见: https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html#alibaba-cloud-aliyun-object-storage-system-oss
chinni 2
chinni 3 天前
这个不支持压缩 可以考虑 2 个
如果只有 linux 的话 borgbackup
如果有 win 或者 mac 的话 推荐 kopia
GitHub 上都有.
sggggy 3
sggggy 3 天前 via iPhone
我记得好像是 hybird backup 是支持的,只是我当时没做好测试,*后还原失败数据全报废了,而且还是挺贵的。

https://tech.teamtime.cc/tech/2019-12-30-阿里云 oss 家庭备份与恢复实战记录 /
xiaodongus 4
xiaodongus 3 天前 via iPhone
HBS 支持备份加密啊,在创建作业时 规则-策略-使用客户端加密
kuanos 5
kuanos 2 天前
@xiaodongus 真的有。。。我竟然没看到,多谢指点!
kuanos 6
kuanos 2 天前
@sggggy hybird backup 是 HBS 的前身吧,经过 xiaodongus 指点我发现 HBS 也有~
sggggy 7
sggggy 2 天前
@kuanos 没错,建议小规模测试,然后验证清楚如何恢复还原之后再正式跑,之前我丢了差不多 5T 的电影,现在老实了,再买一台家里备份。
hotsymbol 8
hotsymbol 1 天前
S3 Plus + AWS CN S3

有没有符合以下要求的开源 API 网关?

需求是某些 API 只有 A 服务器的 IP 有权限访问,想让 B 服务器通过搭建在 A 服务器上的代理访问这些 API 。由于 https 无法解密 URL 参数,所以我不想在 A 服务器上直接搭建代理防止 B 服务器请求了不该请求的 API 。同时我想让 API 的 key 保存在 A 服务器上,B 服务器用另一个 key 通知 A 服务器完成 API 请求,有点类似 API 网关干的事情。虽然自己写一个很容易但我不想重复造轮子,请问 V 友有没有推荐的工具?( B 服务器不是客户端,只是暴露公网,想用 A 服务器过滤后中转更安全)
API 服务器 请求 网关3 条回复 • 2021-03-23 20:01:48 +08:00
opengps 1
opengps 19 小时 38 分钟前 via Android
考虑下用多网卡,只用 b 服务器,用不同的 ip 对外部发布 api,这样似乎更简单些
no1xsyzy 2
no1xsyzy 19 小时 22 分钟前
感觉 Nginx 其实可以?
ETiV 3
ETiV 19 小时 14 分钟前
前半句,nginx ssl_preread 组 SNI 代理
后半句,没看懂

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速