Python爬虫 requests访问http网站之443报错(ssl验证)

报错信息:

1
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='ssr4.scrape.center', port=443): Max retries exceeded with url: /page/1 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))

SSL介绍:

  • SSL(Secure Sockets Layer)验证是在建立HTTPS连接时进行的一种验证过程。SSL验证的目的是确保服务器的身份,并验证通信双方之间的信任关系。以下是SSL验证的基本过程:

  • 客户端请求建立SSL连接:当客户端(通常是Web浏览器)向服务器发送HTTPS连接请求时,它将尝试与服务器建立SSL连接。

  • 服务器发送数字证书:如果服务器支持SSL,它会将包含数字证书的响应发送给客户端。数字证书由经过可信认证的第三方机构(证书颁发机构)签发,并包含了服务器的公钥、服务器的身份信息以及其他相关信息。

  • 客户端验证数字证书:客户端接收到服务器发送的数字证书后,会对证书进行验证。验证过程包括以下几个方面:

    • a. 校验证书的签发机构:客户端会检查证书是否由被客户端信任的可信证书颁发机构签发。

    • b. 检查证书的有效期:客户端会验证证书是否在有效期内,即确认证书尚未过期。

    • c. 验证服务器域名:客户端会核对证书中的服务器域名与客户端请求的域名是否匹配。这可以防止中间人攻击等安全威胁。

    • d. 检查证书的撤销状态:客户端会查询证书撤销列表(CRL)或在线证书状态协议(OCSP)服务器,确认证书是否被吊销。

  • 客户端生成会话密钥:一旦客户端验证通过,它会生成一个临时的会话密钥(也称为”对称密钥”或”会话密钥”),用于该SSL会话的后续加密和解密操作。

  • 安全数据传输:客户端使用服务器的公钥对会话密钥进行加密,并将加密后的会话密钥发送给服务器。服务器使用自己的私钥解密接收到的会话密钥。之后,客户端和服务器之间的通信将使用该会话密钥进行对称加密和解密。

  • 通过SSL验证过程,客户端可以验证服务器的身份,并确保与服务器之间建立了安全的通信通道。这种验证过程可以帮助防止中间人攻击、欺骗和数据篡改等安全威胁。同时,SSL验证还为用户提供了信任和可靠性,因为证书是由可信的第三方机构签发的,代表了服务器的身份和认证信息。
    使用requests.get(verify=False) 关闭ssl验证。
    urllib3.disable_warnings()禁用 urllib3 库中的 SSL 证书验证警告

deepin wine 微信启动失败解决记录

  • 从命令行启动微信,执行以下命令
    1
    2
    cd /opt/apps/com.qq.weixin.deepin/files
    sudo ./run.sh
  • 查看启动信息,报错情况如下
    1
    2
    libGL error: No matching fbConfigs or visuals found
    libGL error: failed to load driver: swrast
  • 缺少这个库,继续开启百度之路:
    image
  • 突然想到,上次安装Pytorch时,更换了ubuntu附加驱动为NVIDIA-470,接下来安装470相应的库,
  • 重新启动微信,成功解决
  

协同过滤

协同过滤算法是一种常见的推荐系统算法,核心思想是利用用户历史行为数据,通过计算相似度,来找到与目标用户或目标商品喜好相似的商品。

基于用户的协同过滤算法:它通过分析用户间的相似性来进行个性化推荐。具体来说,如果用户A和用户B在评分或点赞行为上表现出高度的一致性,那么系统会推断出用户B可能对用户A喜欢的物品感兴趣。这种方法的核心在于,通过挖掘用户间的相似偏好,来预测并推荐那些用户可能喜欢但尚未接触的物品。

为了实现这一目标,首先需要构建一个用户-物品评分矩阵。这个矩阵以用户为行、物品为列,矩阵中的每个元素代表相应用户对相应物品的评分。接下来,算法会计算矩阵中用户向量之间的相似度,这可以通过多种方法完成,如余弦相似度、杰卡德系数、欧式距离、汉明距离或皮尔逊相关系数等。

通过比较这些相似度指标,算法可以识别出与用户A最相似的N个用户,标志为用户群体T(A,N),并且将T中A未交互过的物品提取出来,对于每个物品item计算它的加权平均值,选择制值最高的K个物品作为A的推荐项。

例如,如果用户A和用户B都对某一系列电影给出了高评分,但用户A还对另一部未被用户B观看过的电影给出了高分,那么基于他们的相似偏好,这部未被用户B观看过的电影就有可能被推荐给用户B。

基于物品的协同过滤算法:如果用户U喜欢物品A,而物品A和物品B有很高的相似性,那么用户U也有可能很喜欢物品B。

为了实现这一目标,首先需要建立用户–物品表,记录每个用户最近点击交互过的物品列表,以及每个物品的喜好程度,根据时间倒排列,取前n个物品

物品–物品表:记录每个物品与其相似的物品列表及相似度,根据相似度倒排列,取前k个相似物品。

  

Ubuntu 安装记录

本博文U盘启动方式为UEFI
  • Ubuntu是当今世界最流行的Linux系统之一
  • 桌面环境采用Gnome,界面美观,(也有KDE等)
  • 丰富的软件源,完善的包管理
  • 具备完整的社区支持,许多问题可以通过搜索引擎搜索到已解决的方案
  • 是初入linux的最佳选择之一
  • 下面我们进入主题.
  

驾校一点通抢课脚本

软件: autojs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//判断屏幕锁定,解锁屏幕(数字密码)
if (!device.isScreenOn()) { //从息屏状态 将屏幕唤醒
device.wakeUp();//唤醒设备
console.log('亮屏');
sleep(1000); // 等待屏幕亮起

//miui锁屏滑动不能唤出密码输入 通过下拉通知栏点击时间进入密码解锁
swipe(500, 0, 500, 2120, 900);
//点击“时间”
click(180, 180);
sleep(1000);

console.log('开始解锁');
//解锁 密码 0000
desc(0).findOne().click();
desc(0).findOne().click();
desc(0).findOne().click();
desc(0).findOne().click();

//等待解锁完成,返回并退出
back();
}
sleep(1000);
launch('com.jxedt');
while(!textContains('我的').exists()){
//等待启动完成
};
toast('驾校一点通已打开');//消息提示
log('驾校一点通已打开');//消息提示
click('驾校');
sleep(3000);
click('我要约课');
sleep(3000);
click(666,666); //点击教练
sleep(3000);
while(true){
var myDate = new Date();
console.log(myDate.getMinutes());
if(myDate.getMinutes()==1 || textContains('查看约课记录').exists()){ exit();} //退出循环 时间或约课成功
click(460,300); //刷新
sleep(10);
click(550,1200); //点击教练
sleep(10);
click(900,1950); //预约
sleep(10);
}
  

博客加设coding平台记录

起初博客放在github上,但是github有时访问不了(没有梯子,穷人永远的痛,改过hosts文件),后来转到了码云,(为什么转码云呢?因为码云快呀),但码云它神经呀,绑定域名收费,我可以理解,但你每次推送都要我手动更新,我想不通.果断换coding

coding现在騰訊旗下,部署个静态网站是真的麻烦,实名认证,绑定微信,绑定邮箱….一系列操作,

  • 找静态部署费了好长时间,需要在团队管理处手动开启

  • 绑定域名,需要用腾讯的CDN,意料之中,赠送了六个月的,每个月20G流量,对于我的小破站来说足够用了,不知道是只赠送六个月还是…,如果收费,俺就不绑定域名了.

  • ssl证书,这个申请时间大约要四五天,之后添加解析记录. 其次问题就来了,浏览器提示证书无效,好吧,先把博客文件里的http换成https,再次推送,证书有效了,还是提示不安全,把仓库内容全删掉,再次推送,hexo clean 终于提示安全了.

    (最终,种种原因,我又换回GitHub了)

  

:D 一言句子获取中...