孙同生的博客

为美好的世界献上祝福

  • 首页
  • 标签
  • 分类
  • 归档
  • d3学习demo演示
  • 搜索

CoreText介绍.md

发表于 2017-10-17 | 更新于 2020-10-09 | 分类于 重学iOS | 评论数: | 阅读次数:
本文字数: 68k | 阅读时长 ≈ 1:02

介绍CoreText的一些概念

阅读全文 »

Python爬虫教程-使用Scrapy(2)

发表于 2017-09-22 | 更新于 2018-11-23 | 分类于 quick-start , Python爬虫教程 | 评论数: | 阅读次数:
本文字数: 5.9k | 阅读时长 ≈ 5 分钟

本文主要讲使用IP代理防止爬虫被禁

在 python爬虫中爬取到大约184条数据后,zhipin网站就会采取链接重定向方式 阻止爬取。如果在代码中取消登录操作 , 直接爬取到大约92条数据,你的 IP 就会被封啦~

为了防止这个悲剧发生 根据Scarpy https://doc.scrapy.org/en/latest/topics/practices.html?highlight=banned#avoiding-getting-banned 有以下几个建议:

阅读全文 »

Python爬虫教程-使用Scrapy

发表于 2017-05-19 | 更新于 2018-11-23 | 分类于 quick-start , Python爬虫教程 | 评论数: | 阅读次数:
本文字数: 33k | 阅读时长 ≈ 30 分钟

scrapy基础实例,爬取zhipin网站信息

scarpy的新建 + scarpy模拟登录 + 在pipeline中存取信息到sqlite3 +xpath解析页面

  • 文档
    • Scrapy Documentation
    • Scrapy 0.25 中文翻译
  • 环境 python3.5.2 + scrapy1.3

scrapy新建工程

1
scrapy startproject projectName

具体可以查看 python3爬虫学习

发现 parse 或者 start_requests是爬虫的入口

解析html

阅读全文 »

Python爬虫教程-入门

发表于 2017-04-25 | 更新于 2018-11-23 | 分类于 quick-start , Python爬虫教程 | 评论数: | 阅读次数:
本文字数: 38k | 阅读时长 ≈ 35 分钟
  • 使用的IDE : pycharm ce 社区版
  • python lib文档 : The Python Standard Library

python3 爬虫

创建爬虫

BeautifulSoup

网络连接

1
2
from urllib.request import urlopen
html = urlopen("http://pythonscraping.com/pages/page1.html") print(html.read())

BeautifulSoup

中文文档 https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/

阅读全文 »

AFNetworking3源码阅读-Serialization

发表于 2017-04-20 | 更新于 2018-11-23 | 分类于 essay , AFNetworking | 评论数: | 阅读次数:
本文字数: 36k | 阅读时长 ≈ 33 分钟

Serialization 包括 AFURLResponseSerialization 和 AFURLRequestSerialization

AFURLResponseSerialization 是处理响应的模块,将请求返回的数据解析成对应的格式。而AFURLRequestSerialization的主要作用是修改请求(主要是 HTTP 请求)的头部,提供了一些语义明确的接口设置 HTTP 头部字段。

AFURLResponseSerialization

AFURLResponseSerialization 是一个协议,协议的内容为:

1
2
3
- (nullable id)responseObjectForResponse:(nullable NSURLResponse *)response
data:(nullable NSData *)data
error:(NSError * _Nullable __autoreleasing *)error NS_SWIFT_NOTHROW;

它的实现类为:

  • AFURLResponseSerialization
    • AFHTTPResponseSerializer
      • AFJSONResponseSerializer
      • AFXMLParserResponseSerializer
      • AFXMLDocumentResponseSerializer
      • AFPropertyListResponseSerializer
      • AFImageResponseSerializer
      • AFCompoundResponseSerializer

在文件中 所有类都遵循AFURLResponseSerialization,而AFHTTPResponseSerializer是其他类的基类。

阅读全文 »

AFNetworking3源码阅读-NSURLSession

发表于 2017-04-18 | 更新于 2018-11-23 | 分类于 essay , AFNetworking | 评论数: | 阅读次数:
本文字数: 33k | 阅读时长 ≈ 30 分钟

AFURLSessionManager 和 AFHTTPSessionManager 是AFNetworking的核心类
这里先阅读AFURLSessionManager。

使用 AFURLSessionManager 创建下载任务

1
2
3
4
5
6
7
8
9
10
11
12
13
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

NSURL *URL = [NSURL URLWithString:@"http://example.com/download.zip"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];

NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"File downloaded to: %@", filePath);
}];
[downloadTask resume];
阅读全文 »

AFNetworking3源码阅读-Security

发表于 2017-04-07 | 更新于 2018-11-23 | 分类于 essay , AFNetworking | 评论数: | 阅读次数:
本文字数: 34k | 阅读时长 ≈ 31 分钟

AFNetworking3源码阅读-Security
自 iOS9 发布之后,由于新特性 App Transport Security 的引入,在默认行为下是不能发送 HTTP 请求的。很多网站都在转用 HTTPS,而 AFNetworking 中的 AFSecurityPolicy 就是为了阻止中间人攻击,以及其它漏洞的工具。
AFSecurityPolicy 主要作用就是验证 HTTPS 请求的证书是否有效,如果 app 中有一些敏感信息或者涉及交易信息,一定要使用 HTTPS 来保证交易或者用户信息的安全。

https & SSL Pinning

https

HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密

SSL Pinning

可 以理解为证书绑定,是指客户端直接保存服务端的证书,建立https连接时直接对比服务端返回的和客户端保存的两个证书是否一样,一样就表明证书 是真的,不再去系统的信任证书机构里寻找验证。这适用于非浏览器应用,因为浏览器跟很多未知服务端打交道,无法把每个服务端的证书都保存到本地,但CS架构的像手机APP事先已经知道要进行通信的服务端,可以直接在客户端保存这个服务端的证书用于校验。

为什么直接对比就能保证证书没问题? 如果中间人从客户端取出证书,再伪装成服务端跟其他客户端通信,它发送给客户端的这个证书不就能通过验证吗?确实可以通过验证,但后续的流程走不下去,因为下一步客户端会用证书里的公钥加密,中间人没有这个证书的私钥就解不出内容,也就截获不到数据,这个证书的私钥只有真正的服务端有,中间人伪造证书主要伪造的是公钥。

为什么要用SSL Pinning?正常的验证方式不够吗?如果服务端的证书是从受信任的的CA机构颁发的,验证是没问题的,但CA机构颁发证书比较昂贵,小企业或个人用 户 可能会选择自己颁发证书,这样就无法通过系统受信任的CA机构列表验证这个证书的真伪了,所以需要SSL Pinning这样的方式去验证。

阅读全文 »

AFNetworking3源码阅读-Reachability

发表于 2017-04-06 | 更新于 2018-11-23 | 分类于 essay , AFNetworking | 评论数: | 阅读次数:
本文字数: 21k | 阅读时长 ≈ 19 分钟

AFNetworking3源码阅读-Reachability

用于监控网络状态。当网络状态改变时,是重新发起一些请求的好时间;网络状态的监控也能给用户更好的网络失败提示。

AFNetworkReachabilityManager

使用

1
2
3
4
5
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));
}];

[[AFNetworkReachabilityManager sharedManager] startMonitoring];
阅读全文 »

AVFoundation-条码识别

发表于 2017-02-10 | 更新于 2018-11-23 | 分类于 essay , AVFoundation | 评论数: | 阅读次数:
本文字数: 11k | 阅读时长 ≈ 10 分钟

AVFoundation可以识别一维条码和二维码

一维条码支持的类型有:UPC-E EAN-8 EAN-13 Code 39 Code 93 Code 128 交错式2of5码(iOS8以上) ITF (iOS8以上);

二维码支持的类型有: QR Axtec PDF-417 Data matrix(iOS8以上)

同样使用AVCaptureMetadataOutput ,和实现AVCaptureMetadataOutputObjectsDelegate代理

阅读全文 »

AVFoundation-绘制音频波形图AVAssetReader

发表于 2017-01-10 | 更新于 2018-11-23 | 分类于 essay , AVFoundation | 评论数: | 阅读次数:
本文字数: 26k | 阅读时长 ≈ 24 分钟

AVAssetReader 和 AVAssetWriter类提供的低级功能,能处理更复杂的媒体样本。

AVAssetReader 和 AVAssetWriter

AVAssetReader

AVAssetReader 用于从 AVAsset示例中读取媒体样本。

通常会配置一个或多个AVAssetReaderOutput实例,并通过 copyNextSampleBuffer 方法访问音频和视频帧。

一个资源读取器的内部通道都是以多线程的方式不断提取下一个可用样本的。这样可以在系统请求资源时最小化时延。

阅读全文 »
<i class="fa fa-angle-left" aria-label="上一页"></i>1…567…9<i class="fa fa-angle-right" aria-label="下一页"></i>
SunTongSheng

SunTongSheng

移动端 前端 跨平台

85 日志
22 分类
27 标签
RSS
© 2026 SunTongSheng | 532k | 8:04