class Domain(): def __init__(self,ak,sk): if not (ak or sk): raise ValueError("Please input ak and sk!!") self.op=Auth(ak,sk) def GetDomainList(self,marker=None,limit=None,domainPrefix=None,sourceType=None,sourceQiniuBucket=None): query = "" if marker is not None: query = "&marker=" + marker if limit is not None: query = query + "&limit=" + limit if domainPrefix is not None: query = query + "&domainPrefix=" + domainPrefix if sourceType is not None: query = query + "&sourceType=" + sourceType if sourceQiniuBucket is not None: query = query + "&sourceQiniuBucket" + sourceQiniuBucket else: raise ValueError("sourceQiniuBucket invalue!!") query = query[1:] if len(query) == 0: url = "http://" + HOST + PATH else: url = "http://" + HOST + PATH + "?" +query url=url.replace(' ','%20') token=self.op.token_of_request(url) token="QBox " + token header={'Authorization':str(token)} #print header re=requests.get(url,headers = header) ''' try: re=requests.get(url,headers = header) if re.status_code == 200: domain={} res = re.text res = json.loads(res) domainInfos = res["domainInfos"][0] else: print re.status_code,re.headers except: print(re) ''' #print re.headers print re.status_code print re.text return re.headers,re.status_code,re.text
def qiniu_upload(bucket, upload_name, upload_file): access_key = QINIU_ACCESS_KEY secret_key = QINIU_SECRET_KEY try: q = Auth(access_key, secret_key) bucket_name = bucket print bucket_name key = upload_name token = q.upload_token(bucket_name, key, 3600) data = upload_file ret, info = put_data(token, key, data) print(info) assert ret['key'] == key # 刷新缓存 refresh_url = '/v2/tune/refresh' base_url = "https://oerfptemy.qnssl.com/" + str(key) accessToken = q.token_of_request(refresh_url) print accessToken, type(accessToken) headers = { "Authorization": 'QBox {0}'.format(accessToken), "Content-Type": "application/json" } data = {"urls": ["https://oerfptemy.qnssl.com/" + key]} print dict(urls=[base_url]) print headers r = requests.post('http://fusion.qiniuapi.com/v2/tune/refresh', data=json.dumps(data), headers=headers) print 'code: ' + str(r.status_code) print 'text: ' + r.text code = json.loads(r.text).get('code') print code if r.status_code != 200 and code != '200': return 2 except Exception as e: print e return 0 return 1
def qiniu_data_statistic(request): """七牛云接口统计""" res = {"space": 0, "count": 0} today = datetime.datetime.now().strftime("%Y%m%d%H%M%S") yesterday = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime("%Y%m%d%H%M%S") access_key = 'ifQf2JhtpIsK354ZT69bKbMtBPsDzNlQNizohXHm' secret_key = 'GxBrXLvPiMxls5cqdOdorlwtBW42OulonwMsIHFd' q = Auth(access_key, secret_key) for i in res: url = f'http://api.qiniu.com/v6/{i}?bucket=test&begin={yesterday}&end={today}&g=day' access_token = q.token_of_request(url=url) # 管理凭证 headers = {"Authorization": "QBox " + access_token} resp = requests.get(url, headers=headers).json() res[i] = resp['datas'][-1] return JsonResponse({"status_code": 200, "data": res})
def get_wx_head(headimg, unionid): Encodedurl = urlsafe_base64_encode(headimg) Encodedentryuri = urlsafe_base64_encode('userhead:' + unionid + ".jpg") upheadurl = '/fetch/' + Encodedurl + '/to/' + Encodedentryuri Host = 'iovip.qbox.me' Content_type = 'application/x-www-form-urlencoded' requrl = "http://" + Host + upheadurl q = Auth(qiniu_access_key, qiniu_secret_key) AccessToken = q.token_of_request(requrl, content_type=Content_type) Authorization = 'QBox ' + AccessToken headers = { 'Host': Host, 'Content-Type': Content_type, 'Authorization': Authorization, } r = requests.post(requrl, headers=headers) if (r.status_code != 200): # 抓取不成功 return 0 else: return 1
def get_bucket_host(bucket_name, auth=None, ak=None, sk=None): """ 获取指定bucket的host Args: ---- bucket_name: 待查询的bucket名 auth: 七牛鉴权 ak: bucket_name 所在账号对应的ak sk: ...sk auth 或 (ak, sk)两者指定一个即可 Return: ------ host: bucket 对应的访问外链 """ request_url = 'http://api.qiniu.com/v6/domain/list?tbl=%s' % bucket_name if auth is None: auth = Auth(ak, sk) token = auth.token_of_request(request_url) request_header = {'Authorization': 'QBox %s' % token} r = requests.get(request_url, headers=request_header) host = 'http://' + r.json()[0] return host
def main(): # 需要填写你的 Access Key 和 Secret Key access_key = 'your_AK' secret_key = 'your_SK' # 构建鉴权对象 q = Auth(access_key, secret_key) # 要上传的空间 bucket_name = '2018_11_16' # 上传到七牛后保存的文件名 key = '1' # 本地要上传的文件 file_path = '/Users/pasca/Desktop/七牛文档/1.txt' # 管理凭证的url,这里是列举空间的bucket url = 'http://rs.qbox.me/buckets?' # 生成上传 Token,可以指定过期时间等 # 上传策略示例 # https://developer.qiniu.com/kodo/manual/1206/put-policy policy = { # 'callbackUrl':'https://requestb.in/1c7q2d31', # 'callbackBody':'filename=$(fname)&filesize=$(fsize)' # 'persistentOps':'imageView2/1/w/200/h/200' } # 3600为token过期时间,秒为单位。3600等于一小时 upload_token = q.upload_token(bucket_name, key, 3600, policy) accessToken = q.token_of_request(url) # 执行上传token info = Check_Upload_Token(upload_token, key, file_path) print('上传凭证:', upload_token, info) #执行管理token info1 = Check_AccessToken(url, accessToken) print('管理凭证:', accessToken, info1)
class SpiderMan(): def __init__(self): if not (access_key or screen_key ): raise ValueError("invalid access_key or screen_key!!") self.op = Auth(access_key,screen_key) def register(self,cname,POST=False,DELETE=False): url = "http://" + Host + "/v1/cname/" + cname token = self.op.token_of_request(url) token="QBox " + token header={'Authorization':str(token)} if POST: re = requests.post(url,headers=header) return re.status_code,re.headers,re.text elif DELETE: re = requests.delete(url,headers=header) return re.status_code,re.headers,re.text else: raise ValueError("注册/删除 CNAME") def searchCname(self,cname,sync=False): ''' 查询某条CNAME的区域分布 :param cname: :param sync: 默认异步 :return:区分分布 ''' url="http://" + Host + "/v1/cname/" + cname if sync: url = url + "?sync=true" token=self.op.token_of_request(url) token="QBox " + token header={'Authorization':str(token)} re=requests.get(url,headers = header) #return http.get(url,headers=header) return re.status_code,re.headers,re.text def checkip(self,ip): ''' 查询IP地域信息 :param ip: 目标IP :return: ''' url = "http://"+Host+"/v1/ipcdninfo/" + str(ip) token=self.op.token_of_request(url) token="QBox " + token header={'Authorization':str(token)} re=requests.get(url,headers = header) #return http.get(url,headers=header) return re.status_code,re.headers,re.text def regionalip(self,cname,isp=None,province=None): Content_Type="application/json" url = "http://"+Host+"/v1/regionalip/" body={} body['cname']=cname if isp is not None: body['isp']=isp if province is not None: body['province']=province #body = json.dumps(body) token = self.op.token_of_request(url,body=body,content_type=Content_Type) token="QBox " + token header={'Authorization':str(token)} re=requests.post(url,data=json.dumps(body),headers=header) #return http.get(url,headers=header) return re.status_code,re.headers,re.text def dnsmap(self): pass
secret_key = os.getenv('QINIU_SECRET_KEY') else: access_key = sys.argv[2] secret_key = sys.argv[3] print('QINIU_ACCESS_KEY: ' + access_key) print('QINIU_SECRET_KEY: ' + secret_key) # 构建七牛鉴权对象 auth = Auth(access_key, secret_key) # 上传证书 ## 上传 api 地址 sslcertUploadUrl = 'http://api.qiniu.com/sslcert' ## 生成 上传证书 api accesstoken sslcert_accesstoken = auth.token_of_request(sslcertUploadUrl) print('上传证书 api accesstoken: ' + sslcert_accesstoken) ## 证书信息 sslcertFolder = '/etc/letsencrypt/live/' + cert_domain sslcertPriFile = open(sslcertFolder + '/privkey.pem') sslcertChainFile = open(sslcertFolder + '/fullchain.pem') sslcertPriStr = sslcertPriFile.read() sslcertChainStr = sslcertChainFile.read() nowDate = datetime.date.today().strftime("%Y%m%d") sslcertData = { 'name': cert_domain + '-letsencrypt-' + nowDate, 'common_name': cert_domain, 'pri': sslcertPriStr, 'ca': sslcertChainStr }
# -*- coding: utf-8 -*- from qiniu import Auth access_key = '公钥' secret_key = '私钥' url = "http://ai.qiniuapi.com/v1/image/groups/search" AccessToken = Auth(access_key, secret_key) print(AccessToken.token_of_request(url))
class DomainManager(): def __init__(self, ak, sk): if not (ak or sk): raise ValueError("Please input ak and sk!!") self.op = Auth(ak, sk) def GetDomainListV2(self, marker=None, limit=None): query = "" if marker is not None: query = "&marker=" + marker if limit is not None: query = query + "&limit=" + limit query = query[1:] if len(query) == 0: url = "http://" + HOST + PATH else: url = "http://" + HOST + PATH + "?" + query url = url.replace(' ', '%20') token = self.op.token_of_request(url) token = "QBox " + token header = {'Authorization': str(token)} # print header re = requests.get(url, headers=header) # print re.headers print(re.status_code) print(re.text) return re.headers, re.status_code, re.text def GetDomains(self): ''' marker=None,limit=None,domainPrefix=None,sourceType=None,sourceQiniuBucket=None :param kwargs: :return: ''' url = "http://" + HOST + PATH url = url.replace(' ', '%20') token = self.op.token_of_request(url) header = {'Authorization': 'QBox %s' % token} # print header try: re = requests.get(url, headers=header) info = {'code': re.status_code, 'message': re.headers} body = re.text except (requests.HTTPError, requests.ConnectionError) as e: info = {'code': 0, 'message': e.message()} body = None return info, body def GetDomainList(self, **kwargs): ''' :param kwargs: 过滤条件 :return: ''' url = "http://" + HOST + PATH url = url.replace(' ', '%20') token = self.op.token_of_request(url) header = {'Authorization': 'QBox %s' % token} # print header try: re = requests.get(url, headers=header) body = json.loads(re.text) domainInfos = body['domainInfos'] domian_list = [] if kwargs: for d in domainInfos: for k, v in kwargs.items(): d = filters(d, k, v) if d: domian_list.append(d['name']) else: for d in domainInfos: domian_list.append(d['name']) info = {'code': re.status_code, 'message': re.headers} return info, domian_list except (requests.HTTPError, requests.ConnectionError) as e: info = {'code': 0, 'message': e.message()} body = None return info, body
#import qiniu import datetime import time import os import urllib import urllib2 access_key = '68-wB4MzU0HYKh0LlNdhQsptearKELGLVMZ66jZO' secret_key = 'H5vDtdpJyQYPPpHSAiouB5CceQ0_oS14caLGL8Yb' q = Auth(access_key, secret_key) host = "http://pili.qiniuapi.com" hub = "yuenr_live" ticks = datetime.datetime.now() url = ("/v2/hubs/%s/stat/play/history/detail?time=%s" % (hub, ticks)) print(url) token = q.token_of_request(url) print(token) headers = { 'User-Agent': "QiniuPython/7.2.2 (Windows; AMD64; ) Python/2.7.12", "Authorization": "Qiniu " + token, "Content-Type": "application/x-www-form-urlencoded" } data = {"Authorization": token} # result = http._get(host+url, None, q) # print(result) # print http.USER_AGENT
def parse(self, response): if 'article_id' in os.environ.keys(): article_id = os.environ['article_id'] else: return sel = Selector(response) article_ps = sel.xpath( '//div[@class="rich_media_content "]//p|//div[@class="rich_media_content "]/section' ) if len(article_ps) == 0: return article_items = OrderedDict() article_items['article_id'] = article_id bucket_name = 'qnmami-information' access_key = "nR4zZ4XaxesEAhPW59BZNtWOMu4aD-pnHcg28iF6", secret_key = "uaykXj8wnZwWT3n02XG-keUat-UOUGfbGxHKEgUr" q = Auth(access_key, secret_key) index = 0 for article_p in article_ps: if len(article_p.xpath('.//img')) > 0: if ''.join(article_p.xpath(".//text()").extract()): article_items['article_item[' + str(index) + '][text_content]'] = ''.join( article_p.xpath('.//text()').extract()) article_items['article_item[' + str(index) + '][type]'] = 1 article_items['article_item[' + str(index) + '][id]'] = '' index += 1 article_items['article_item[' + str(index) + '][type]'] = 2 article_items['article_item[' + str(index) + '][id]'] = '' pic_url = article_p.xpath('.//img/@data-src').extract() if len(pic_url) > 0: pic_url = pic_url[0] else: pic_url = article_p.xpath('.//img/@src').extract()[0] m = hashlib.md5() m.update(pic_url) pic_url_hash = m.hexdigest() ff = '/fetch/' + urlsafe_b64encode( pic_url) + '/to/' + urlsafe_b64encode(bucket_name + ':article_' + pic_url_hash) token = q.token_of_request( 'http://iovip.qbox.me' + ff, content_type='application/x-www-form-urlencoded') token = ''.join(re.search('\(\'(.+)\',\)(.+)', token).groups()) authorization = 'QBox ' + token headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': authorization } req = requests.post('http://iovip.qbox.me' + ff, headers=headers) # pic_url_qiniu = 'http://lixian.cdnqiniu01.qnmami.com/' + req.json()['key'] pic_url_qiniu = 'http://information.cdnqiniu02.qnmami.com/' + req.json( )['key'] article_items['article_item[' + str(index) + '][image_url]'] = pic_url_qiniu else: if ''.join(article_p.xpath('.//text()').extract()) == '': continue article_items['article_item[' + str(index) + '][text_content]'] = ''.join( article_p.xpath('.//text()').extract()) article_items['article_item[' + str(index) + '][type]'] = 1 article_items['article_item[' + str(index) + '][id]'] = '' index += 1 req = requests.post('http://oss.qnmami.com/article/add-article-item', data=article_items) logging.warning(req.text)