有没有人使用过阿里云投篮验证码破解ios

又出牛人!!这投篮,那分数!不是累了还要继续!~~~膜拜~~【人人网 - 分享】
又出牛人!!这投篮,那分数!不是累了还要继续!~~~膜拜~~
分享这个视频的人喜欢
分享这个视频的人也爱看
放空一整天
热爱一件事就用心去做吧
我不知道用什么理由
遗失了正义
热门视频推荐
热门日志推荐
同类视频推荐
北京千橡网景科技发展有限公司:
文网文[号··京公网安备号·甲测资字
文化部监督电子邮箱:wlwh@vip.sina.com··
文明办网文明上网举报电话: 举报邮箱:&&&&&&&&&&&&
请输入手机号,完成注册
请输入验证码
密码必须由6-20个字符组成
下载人人客户端
品评校花校草,体验校园广场  最近项目中用到了阿里云OSS对象存储,用来存储APP中图片、音频等一些数据。但坑爹的阿里云居然在11月20日将SDK版本更新到了2.1.1,然而网上给出的教程都是1.*版本的(针对iOS),两个版本所调用的方法差别较大(自我感觉),当然原理都一样。所以看了两天SDK,自己封装了几个常用的方法。
一、OSS简单介绍
  OSS是提供非结构化数据存取的服务,非结构化数据一般包括图片、文档、音频、视频等一些文件。OSS提供了接口,开发者可以通过这些接口对数据进行上传或下载等操作。
  ,创建一个bucket(数据容器,可以创建多个bucket,但是每个bucket名字唯一),在bucket属性里面可以设置bucket读写属性。然后所有的object(文件)都存储在bucket里面。
  bucket:
& & & & & & & &
  bucket控制台:
& & & & & & & &&
二、OSS SDK1.0与SDK2.0方法调用区别
  (1)SDK1.0方法调用形式
    在SDK1.0中,主要通过OSSService-Bucket方式进行操作。首先获取service,设置service的数据中心域名和加签等。然后创建bucket,设置bucket属性。通过service调用一系列方法,并把bucket传入方法中,获取返回结果。实例代码:
1 - (void)upLoadObjectWithKey:(NSString *)key object:(NSData *)object type:(NSString *)type{
OSSData *ossD
//存取请求结果
id&ALBBOSSServiceProtocol& ossService = [ALBBOSSServiceProvider getService];
//获取service
[ossService setGlobalDefaultBucketAcl:PRIVATE];
//访问属性为私有
[ossService setGlobalDefaultBucketHostId:@"&yourHostId&"];
//设置你的域名
[ossService setGenerateToken:^(NSString *method, NSString *md5, NSString *type, NSString *date, NSString *xoss, NSString *resource){
NSString *content = [NSString stringWithFormat:@"%@\n%@\n%@\n%@\n%@%@", method, md5, type, date, xoss, resource];
NSString *signature = [OSSTool calBase64Sha1WithData:content withKey:@"&secretKey&"];
//填入你的secretKey
return [NSString stringWithFormat:@"OSS %@:%@", @"&accessKey&", signature];
//填入你的accessKey
ossData = [ossService getOSSDataWithBucket:[ossService getBucket:@"yourBucketName"] key:key];
[ossData setData:uploadData withType:type];
//设置上传文件类型
[ossData enableUploadCheckMd5sum:YES];
  (2)SDK2.0方法调用形式
    在SDK2.0中,主要以Client-(put/get..)Object方式进行操作。首先对client进行初始化。然后创建putObject/getObject对象,设置对象属性,然后使用类似OSSTask *task = [client putObject:put];的方法,进行文件操作,具体代码下面给出。
三、OSS简单上传文件操作
  在使用OSS之前,需要引入OSS iOS SDK framework。在Xcode中,直接把framework拖入您对应的Target下即可,在弹出框勾选&Copy items if needed&。如果项目依赖Pod,无需引入framework,只需要在Podfile文件中添加依赖"pod 'AliyunOSSiOS'"即可。然后在工程的头文件中引入&#import &AliyunOSSiOS/OSSService.h&
  (1)简单设置client
    OSSClient是OSS服务的iOS客户端,它为调用者提供了一系列的方法,可以用来操作,管理存储空间(bucket)和文件(object)等。示例代码:
OSSClient *
NSString *endpoint = @"&hostId&";
//注意在控制台获取域名之后,要在前面加上http://,并去掉bucketName字段。例如从控制台获取域名为&&bucketName&.oss-cn-beijing.aliyuncs.com&,则hostId应为&http://oss-cn-beijing.aliyuncs.com&
id&OSSCredentialProvider& credential = [[OSSPlainTextAKSKPairCredentialProvider alloc] initWithPlainTextAccessKey:@"&your accessKeyId&" secretKey:@"&your accessKeySecret&"];
//明文设置client
client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential];
//初始化client
  (2)文件上传操作
    上传Object可以直接上传OSSData,或者通过NSURL上传一个文件。通过使用OSSPutObjectRequest类进行上传。示例代码:
OSSPutObjectRequest * put = [OSSPutObjectRequest new];
// 必填字段
put.bucketName = @"&bucketName&";
put.objectKey = @"&objectKey&";
put.uploadingFileURL = [NSURL fileURLWithPath:@"&filepath&"];
// put.uploadingData = &NSData *&; // 直接上传NSData
// 可选字段,可不设置
put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
// 当前上传段长度、当前已经上传总长度、一共需要上传的总长度
NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
// 以下可选字段的含义参考: https://docs.aliyun.com/#/pub/oss/api-reference/object&PutObject
// put.contentType = @"";
// put.contentMd5 = @"";
// put.contentEncoding = @"";
// put.contentDisposition = @"";
// put.objectMeta = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"value1", @"x-oss-meta-name1", nil]; // 可以在上传时设置元信息或者其他HTTP头部
OSSTask * putTask = [client putObject:put];  //client为上一段初始化的client
[putTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
NSLog(@"upload object success!");
NSLog(@"upload object failed, error: %@" , task.error);
四、自己封装的上传、下载、拼接URL方法。
  头文件:
@interface AliyunAPIUtil : NSObject
//获取图片URL
+ (NSString *) imageURLWithKey:(NSString *)key isPublic:(BOOL)isP
+ (NSString *) imageURLWithKey:(NSString *)key isPublic:(BOOL)isPublic orginal:(BOOL)
//上传方法
- (id)initUploadWithCategory:(NSString *)category public:(BOOL)isPublic type:(NSString *)type data:(NSData *)uploadD
//上传方法回调
- (void)startUploadWithCallback:(void (^)(BOOL success))uploadCallback;
//下载方法
- (id)initDownLoadWithKey:(NSString *)key public:(BOOL)isP
//下载方法回调
- (void)startDownloadWithCallback:(void (^)(BOOL success))downloadC
  (1)上传方法
*上传对象方法
4 -(id)initUploadWithCategory:(NSString *)category public:(BOOL)isPublic type:(NSString *)type data:(NSData *)uploadData{
self = [super init];
//CDDoctorEntity *doctor = [[CDUser userDefaults] currentUser];
long long int timevalue = (long long int)([NSDate date].timeIntervalSince1970 * 1000);
NSString *ID = @"102";
//测试用,自定义ID变量,标识上传文件。
NSString *endpoint = @"&hostId&";
NSString *accessKey = @"&accessKey&";
NSString *secretKey = @"&secretKey&";
NSString *key = [NSString stringWithFormat:@"%@-ios-%@-%lld.%@",category, ID, timevalue, type];
//自己拼接key,用于标识对象。
id&OSSCredentialProvider&
OSSClient *
OSSPutObjectRequest *
//公有访问
if(isPublic){
credential = [[OSSPlainTextAKSKPairCredentialProvider alloc] initWithPlainTextAccessKey:@"&accessKey&" secretKey:@"&accessKeySecret&"];
//私有访问
//自定义加签
credential = [[OSSCustomSignerCredentialProvider alloc] initWithImplementedSigner:^NSString *(NSString *contentToSign, NSError *__autoreleasing *error) {
NSString *signature = [OSSUtil calBase64Sha1WithData:contentToSign withSecret:secretKey]; // 这里是用SDK内的工具函数进行本地加签,建议您通过业务server实现远程加签
if (signature != nil) {
//*error = [NSError errorWithDomain:@"&your domain&" code:-1001 userInfo:@"&your error info&"];
return [NSString stringWithFormat:@"OSS %@:%@", accessKey, signature];
//初始化client
client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential];
//初始化put请求体并设定请求对象属性
put = [OSSPutObjectRequest new];
put.bucketName = @"&bucketName&";
put.objectKey =
put.uploadingData = uploadD
//执行请求,获取请求结果task
self.task = [client putObject:put];
取得请求结果后的回调方法。用于处理请求完毕后的操作。
57 - (void)startUploadWithCallback:(void (^)(BOOL success))uploadCallback{
//异步处理返回结果
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self.task continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
NSLog(@"上传成功");
uploadCallback(YES);
NSLog(@"上传失败,错误提示: %@" , task.error);
uploadCallback(NO);
//task.error.code
    方法调用:
AliyunAPIUtil *upload = [[AliyunAPIUtil alloc] initUploadWithCategory:@"avator-img" public:NO type:@"jpg" data:UIImageJPEGRepresentation(image, 0.5)];    //image为上传的图片对象,自己定义。
[upload startUploadWithCallback:^(BOOL success) {
if (success) {
NSLog(@"上传成功");
//其他操作
  (2)下载方法
*下载对象方法
4 -(id)initDownLoadWithKey:(NSString *)key public:(BOOL)isPublic{
self = [super init];
self.fileKey =
self.isPublic = isP
NSString *endpoint = @"&hostId&";
NSString *accessKey = @"&accessKey&";
NSString *secretKey = @"&secrerKey&";
OSSClient *
OSSGetObjectRequest *get;
id&OSSCredentialProvider&
if(self.isPublic){
//公有方式访问19
credential = [[OSSPlainTextAKSKPairCredentialProvider alloc] initWithPlainTextAccessKey:@"&your accessKeyId&" secretKey:@"&your accessKeySecret&"];
//私有方式访问
credential = [[OSSCustomSignerCredentialProvider alloc] initWithImplementedSigner:^NSString *(NSString *contentToSign, NSError *__autoreleasing *error) {
NSString *signature = [OSSUtil calBase64Sha1WithData:contentToSign withSecret:secretKey]; // 这里是用SDK内的工具函数进行本地加签,建议您通过业务server实现远程加签
if (signature != nil) {
//*error = [NSError errorWithDomain:@"&your domain&" code:-1001 userInfo:@"&your error info&"];
return [NSString stringWithFormat:@"OSS %@:%@", accessKey, signature];
//初试化client客户端
client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential];
//初始化get请求对象,并设定get的属性值
get = [OSSGetObjectRequest new];
get.bucketName = @"&bucketName&";
get.objectKey =
self.task = [client getObject:get];
取得请求结果后的回调方法。用于处理请求完毕后的操作。
51 -(void)startDownloadWithCallback:(void (^)(BOOL success))downloadCallback{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self.task continueWithSuccessBlock:^id(OSSTask *task) {
if(!task.error){
downloadCallback(YES);
downloadCallback(NO);
  (3)自己加签,拼接URL
    如果想通过其他方式访问存储在云端的Object。例如在缓存APP头像到云端后,想通过使用SDWebImage获取头像,这时候就需要知道object的URL。当bucket设置为私有读写时,需要加签生成URL。
+(NSString *)imageURLWithKey:(NSString *)key isPublic:(BOOL)isPublic{
//key参数在上传文件时候生成的,保存在本地,获取文件时通过key去索引
if(isPublic){
//公有访问URL
return [NSString stringWithFormat:@"http://&bucketName&.&hostId&/%@",key];
//私有访问URL
long long int timevalue = (long long int)([NSDate date].timeIntervalSince1970 +60);
//设置URL超时时间,当前设置为60秒有效时间
*加签实际上是一个核对机制。在这里一般将timevalue、bucketname、key、secretKey进行加密并与域名等字段连接,生成URL。然后服务端解析      *这些字段进行核对,核对成功则返回正确数据。在生成signature时,以上字段必须添加,还有一些其他属性可以不添加。
NSString *string = [NSString stringWithFormat:@"GET\n\n\n%lld\n/&bucketName&/%@",timevalue,key];  //不要忘记设定bucketName
NSLog(@"%@",string);
NSString *signature = [OSSUtil calBase64Sha1WithData:string withSecret:@"&secretKey&"];
NSString *encodedSignature = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)signature,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8));
NSString *urlString = [NSString stringWithFormat:@"http://&bucketName&.&hostId&/%@?Expires=%lld&OSSAccessKeyId=&accessKey&&Signature=%@",key,timevalue,encodedSignature];  //以&&表明的为未传出参数,需要自己修改。
signature相关解释:
(1)http://help.aliyun.com/document_detail/oss/api-reference/access-control/signature-url.html?spm=.5.1.U9vNfL
(2)http://help.aliyun.com/document_detail/oss/api-reference/access-control/signature-header.html
    以上的一些方法,在阿里云的SDK中,大部分已经给出。各位可能只看看SDK就能够熟练使用这些方法。此文如果对大家有帮助,我很欣慰;如无帮助,敬请见谅。如有错误或者问题,可以指出或者问我。
阅读(...) 评论()博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 投篮验证码破解 的文章

 

随机推荐