<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      華為云照片的爬蟲程序更新(python3.6)

      一、背景:

      每年終都有一個(gè)習(xí)慣,就是整理資料進(jìn)行歸檔,結(jié)果發(fā)現(xiàn)手機(jī)照片全備份在華為云里,在官網(wǎng)上找了一圈,沒找到官方的pc工具用來同步照片。

      于是找出上次寫的程序,看看能不能爬到數(shù)據(jù),然而……果然不好用。因?yàn)槿A為在登錄上又增加了一些驗(yàn)證機(jī)制,譬如:賬號(hào)保護(hù)

      抓了一下報(bào)文,發(fā)現(xiàn)邏輯變復(fù)雜了很多,部分邏輯還封裝在js里。

      算了,懶得琢磨了,直接用selenium吧。

      二、實(shí)現(xiàn)思路:

      1、用Python + selenium +瀏覽器 ,人工登錄,保存cookie及簽名信息。

      2、再調(diào)用requests加第一步保存的cookie和前面,直接向后臺(tái)發(fā)post請(qǐng)求,獲取數(shù)據(jù)。

      思路確定,開干。

      三、開發(fā)環(huán)境:

      1、python3.6,在最近的一個(gè)項(xiàng)目中由于多次遇到中文問題,實(shí)在是煩不勝煩,所以就把開發(fā)工具升級(jí)到了py3,確實(shí)方便多了。

      說到py2升到py3,雖然還是有些寫法調(diào)整,有些包在py3下不支持,但總體來說,遷移很平穩(wěn),寫法問題,百度一下基本就可以解決。

      我用的Anaconda的python包。

      3.6.3 |Anaconda custom (64-bit)| (default, Oct 15 2017, 03:27:45) [MSC v.1900 64 bit (AMD64)]
      Python Type "help", "copyright", "credits" or "license" for more information.

       

      2、selenium 3.9.0,用conda現(xiàn)安裝的。

      conda install selenium 

      3、瀏覽器,試用了firefox,edge,chrome,phantomjs,分別版本如下:

      firefox: 58.0.2 (64 位)
      edge: Microsoft Edge 41.16299.248.0 ,Microsoft Edge 41.16299.248.0
      chrome: 版本 63.0.3239.132(正式版本) (32 位)
      phantomjs: 2.1.1 
      
      另外,操作系統(tǒng):Microsoft Windows [版本 10.0.16299.248]

       

       

      4、瀏覽器驅(qū)動(dòng):

      firefox驅(qū)動(dòng),https://github.com/mozilla/geckodriver/releases/,支持 Firefox 55及以上版本。

      edge驅(qū)動(dòng),https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/#downloads,最新版本 Release 16299,Version: 5.16299,支持 Edge version supported: 16.16299 。注意edge驅(qū)動(dòng)只有在edge瀏覽器未啟動(dòng)的情況下才能正常運(yùn)行,否則會(huì)報(bào)錯(cuò)。

      chrome驅(qū)動(dòng),https://sites.google.com/a/chromium.org/chromedriver/downloads,這里需要注意的是:最新版本是2.35(不是2.9),2.35才支持chrome 61-63版本。

      phantomjs,http://phantomjs.org/download.html,phantomjs可以理解成沒有界面的瀏覽器,所以驅(qū)動(dòng)跟瀏覽器是一體的。

      驅(qū)動(dòng)版本一定要選對(duì),否則會(huì)有奇奇怪怪的問題。

       

      四、實(shí)現(xiàn)代碼

      huaweiphoto_sele.py,如下:

      #-*-coding=utf-8-*-
      #Create by : zhongtang 
      #Create Date : 2018.2.28
      
      from selenium import webdriver
      from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
      from selenium.webdriver.common.proxy import ProxyType
      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.support import expected_conditions as EC
      from selenium.webdriver.common.by import By
      from PIL import Image
      import json,re,os,time,requests,socket
      
      #下載函數(shù)
      from  huaweiphoto_py3 import HuaWei
      
      
      class hwSele:
          SeleBrowser=None
          TimeOUT=30
          Headers=None
          Username='*****'
          Passwd='****'
          DriverType="Edge".lower()
          def __init__(self,ip=None,port=None,SeleDriver="Edge",SeleHeader=None):        
              print (u'proxy %s %s...' %(ip,port))
              if not SeleHeader :
                  self.Headers = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0"
              else:
                  self.Headers = SeleHeader
              
              if SeleDriver: 
                  self.DriverType= SeleDriver.lower()
              
              #加代理的目的是為了更便于抓報(bào)文。
              if self.DriverType=='chrome' :
                  chromeOptions = webdriver.ChromeOptions()
                  if ip:
                      chromeOptions.add_argument('--proxy-server=http://%s:%s' %(ip,port))  
                      self.SeleBrowser = webdriver.Chrome(chrome_options=chromeOptions)
                  else:
                      self.SeleBrowser = webdriver.Chrome()
              #DriverType='Edge'
              elif self.DriverType=='phantomjs':
                  #設(shè)置userAgent
                  dcap = dict(DesiredCapabilities.PHANTOMJS)
                  dcap["phantomjs.page.settings.userAgent"] = (self.Headers)    
                  self.SeleBrowser = webdriver.PhantomJS(executable_path=r'D:\python\toupiao\phantomjs\bin\phantomjs.exe',desired_capabilities=dcap)
                  if ip:
                      proxy=webdriver.Proxy()
                      proxy.proxy_type=ProxyType.MANUAL
                      proxy.http_proxy='%s:%s' %(ip,port)            
                      proxy.add_to_capabilities(webdriver.DesiredCapabilities.PHANTOMJS)
                  else:
                      self.SeleBrowser.start_session(webdriver.DesiredCapabilities.PHANTOMJS)
              elif self.DriverType=='edge':
                  self.KillSeleProc() #edge,默認(rèn)先kill掉已啟動(dòng)的瀏覽器。
                  self.SeleBrowser = webdriver.Edge()
              elif self.DriverType=='firefox':
                  webdriver.DesiredCapabilities.FIREFOX['firefox.page.settings.userAgent'] = self.Headers
                  profile = webdriver.FirefoxProfile()
                  if ip: 
                      profile.set_preference('network.proxy.type', 1)  # 默認(rèn)值0,就是直接連接;1就是手工配置代理。  
                      profile.set_preference('network.proxy.http', ip)  
                      profile.set_preference('network.proxy.http_port', port)  
                      profile.set_preference('network.proxy.ssl', ip)  
                      profile.set_preference('network.proxy.ssl_port', port)
                      profile.update_preferences()  
                      self.SeleBrowser = webdriver.Firefox(profile)
                  else:
                      self.SeleBrowser = webdriver.Firefox()        
              socket.setdefaulttimeout(self.TimeOUT) 
              # 設(shè)置10秒頁面超時(shí)返回,類似于requests.get()的timeout選項(xiàng),driver.get()沒有timeout選項(xiàng)  
              # 以前遇到過driver.get(url)一直不返回,但也不報(bào)錯(cuò)的問題,這時(shí)程序會(huì)卡住,設(shè)置超時(shí)選項(xiàng)能解決這個(gè)問題。  
              self.SeleBrowser.set_page_load_timeout(self.TimeOUT)  
              # 設(shè)置10秒腳本超時(shí)時(shí)間
              self.SeleBrowser.set_script_timeout(self.TimeOUT)
              # 隱式等待30秒,可以自己調(diào)節(jié) 
              self.SeleBrowser.implicitly_wait(self.TimeOUT)
      
          def KillSeleProc(self):
              if self.DriverType=='edge':
                  command = 'taskkill /F /IM MicrosoftWebDriver.exe & taskkill /F /IM MicrosoftEdge.exe'
                  #比如這里關(guān)閉edge進(jìn)程
              elif self.DriverType=='chrome':
                  command = 'taskkill /F /IM chromedriver.exe & taskkill /F /IM chrome.exe'
              elif self.DriverType=='firefox':
                  command = 'taskkill /F /IM geckodriver.exe & taskkill /F /IM firefox.exe'
              elif self.DriverType=="phantomjs":
                  command = 'taskkill /F /IM phantomjs.exe '
              if command: os.system(command)
              
                  
          def QuitSele(self,e,mess=None,iRet= -1):
              print (mess,e)        
              if self.SeleBrowser: 
                  self.SeleBrowser.save_screenshot('error.png')
                  self.SeleBrowser.close()
              self.KillSeleProc()
              return iRet
              
          def LoginHW(self):
              '''
              try:
                  element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "loadedButton")))
              finally:
                  print(driver.find_element_by_id("content").text)
                  driver.close()
                  
              #等待頁面加載完畢1,顯示等待
              try:            
                  auth_img = WebDriverWait(self.SeleBrowser, 5).until(EC.presence_of_element_located((By.ID, "randomCodeImg")))      
              except Exception as e: 
                  print (u'加載驗(yàn)證碼超時(shí)...',e)
                  SeleBrowser.save_screenshot(r'd:\python\toupiao\error.jpg')
                  self.SeleBrowser.close()
                  return -1 
                  
                  
              #等待頁面加載完畢2,隱式等待
              dr=WebDriverWait(self.SeleBrowser,20,0.5)
              dr.until(lambda the_driver:the_driver.find_element_by_xpath("http://img[@id='randomCodeImg']").is_displayed())       
              '''
              try:
                  self.SeleBrowser.get('http://cloud.huawei.com')
              except Exception as e:  
                  return self.QuitSele(e,"打開主頁出錯(cuò)!")
              
              try:
                  #等待頁面加載完畢
                  dr=WebDriverWait(self.SeleBrowser,self.TimeOUT,0.5)
                  dr.until(lambda the_driver:the_driver.find_element_by_id("randomCodeImg").is_displayed())        
              except Exception as e:
                  return self.QuitSele(e,"加載驗(yàn)證碼超時(shí)!")
      
              elem_user = self.SeleBrowser.find_element_by_id("login_userName")
              elem_user.clear()
              elem_user.send_keys(self.Username)
              
              elem_pwd =  self.SeleBrowser.find_element_by_id("login_password")
              elem_pwd.clear()
              elem_pwd.send_keys(self.Passwd)        
      
              auth_img = self.SeleBrowser.find_element_by_id("randomCodeImg")
              if not auth_img.is_displayed() :
                  if not auth_img.is_displayed():
                      return self.QuitSele(e,"驗(yàn)證碼未正常顯示!")
              
              if self.DriverType=='firefox':
                  #firefox驅(qū)動(dòng)支持直接 元素另存圖片
                  auth_img.screenshot("captcha.png")
                  im = Image.open('captcha.png')
              else:
                  #chrome ,edge 都不支持,phantomjs存的還是整個(gè)窗口
                  self.SeleBrowser.save_screenshot('captcha.png')  
                  im = Image.open('captcha.png')
                  x= eval(auth_img.get_attribute("x"))
                  y= eval(auth_img.get_attribute("y"))
                  width= eval(auth_img.get_attribute("width"))
                  height= eval(auth_img.get_attribute("height"))
                  im = im.crop((x, y, x+width, y+height))
              #這里采用最原始、最準(zhǔn)確的方法:顯示圖片,人工識(shí)別^_^,智能輸入驗(yàn)證碼。
              #當(dāng)然也可以調(diào)用三方的圖像識(shí)別api進(jìn)行識(shí)別,譬如pytesseract或者鵝廠的圖像識(shí)別api,不復(fù)雜,但懶得寫了。
              im.show()
              authCode= input(u'請(qǐng)輸入驗(yàn)證碼:')
              
              # 先獲取焦點(diǎn),再賦值,再點(diǎn)擊登錄
              '''
              js= '$("#randomCode").attr("value","%s");$("#randomCode").trigger("onchange");' %authCode
              self.SeleBrowser.execute_script(js)
              
              js= '$("#btnLogin").trigger("click");' 
              self.SeleBrowser.execute_script(js)  
              '''
              randomCode = self.SeleBrowser.find_element_by_id("randomCode")
              randomCode.clear()
              randomCode.send_keys(authCode)
              
              #休息五秒,等待完成后臺(tái)預(yù)驗(yàn)證交互
              time.sleep(5)
              
              btnLogin = self.SeleBrowser.find_element_by_id("btnLogin")
              btnLogin.click()
                  
              #賬號(hào)保護(hù)有時(shí)候會(huì)提示
              '''
              <div class="global_dialog_confirm_main" style="display: block; margin-top: -163.5px;">
              <div class="global_dialog_confirm_title"> 
              <h3 class="ellipsis" title="帳號(hào)保護(hù)">帳號(hào)保護(hù)</h3>    </div>    
              <div class="global_dialog_confirm_content" style="padding-bottom: 0px;"><div>
              <div id="authenDialog"><p class="inptips2">您已開啟帳號(hào)保護(hù),請(qǐng)輸入驗(yàn)證碼以完成登錄。</p>
              <div class="margin10-EMUI5"><div id="accountDiv" class="fixAccountDrt ddrop-EMU5">        
              '''
              try :
                  #loginConfirm = self.SeleBrowser.find_element_by_class_name("global_dialog_confirm_main")
                  loginConfirm =WebDriverWait(self.SeleBrowser, 5, 0.5).until(EC.presence_of_element_located((By.CLASS_NAME, 'global_dialog_confirm_main') ))                  
                  #需要驗(yàn)證,這塊懶得實(shí)現(xiàn)了,休眠60秒,手動(dòng)操作吧。
                  if loginConfirm.is_displayed():
                      time.sleep(self.TimeOUT*2)
              except:
                  #不需要驗(yàn)證,直接下一步
                  pass
                      
              #等待頁面加載完畢
              '''
              <span class="index-span" data-bind="lang.common.album">圖庫</span>
              '''
              try :
                  #loginConfirm = self.SeleBrowser.find_element_by_class_name("global_dialog_confirm_main")
                  success =WebDriverWait(self.SeleBrowser, 20, 0.5).until(EC.presence_of_element_located((By.XPATH, '//span[@data-bind="lang.common.album"]') ))                  
              except Exception as e:
                  #登錄失敗
                  return self.QuitSele(e,"登錄失敗!",iRet=-999)
              
              #判斷登錄結(jié)果
              if not success.is_displayed(): return self.QuitSele(None,"登錄失敗!",iRet=-999)
           
              #再次判斷,增加一次意外處理
              source_code =self.SeleBrowser.page_source
              if '聯(lián)系人' not in source_code or '圖庫' not in source_code : 
                  return self.QuitSele(None,"登錄失敗!",iRet = -9999 )
      
              cookie = [item["name"] + "=" + item["value"] for item in self.SeleBrowser.get_cookies()]  
              cookiestr = ';'.join(item for item in cookie)
              #保存CSRFToken
              pattern = re.compile('CSRFToken = "(.*?)"',re.S)        
              content = re.search(pattern,source_code)
              if content :
                  CSRFToken = content.group(1)
              else :
                  print ('獲取CSRFToken出錯(cuò)!')
              self.Headers={
                  'User-Agent': '%s' %self.Headers,
                  'CSRFToken': '%s' %CSRFToken,
                  'Cookie': '%s' %cookiestr
              }
              return 1 
                  
      if __name__ == '__main__':
          photohw= HuaWei()
          count =0 
          while (count <100):
              count += 1
              selehw= hwSele(SeleDriver='edge')
              iRet = selehw.LoginHW()
              if iRet !=1:
                  print( '登錄華為失敗!!!\n\n')
                  continue        
              photohw.loginHeaders = selehw.Headers 
              page = photohw.getAlbumList()
              if page=='' :
                  print( '獲取到相冊(cè)列表失敗!!!\n\n')
                  break
              #保存相冊(cè)列表
              iRet = photohw.getFileList(page,'albumList','albumId')
              if iRet <=0 :
                  print('保存相冊(cè)出錯(cuò),重新登錄')
                  continue
              #保存公共相冊(cè)列表
              iRet = photohw.getFileList(page,'ownShareList','shareId')
              if iRet ==0 :
                  print('運(yùn)行結(jié)束,可以用迅雷打開相冊(cè)文件進(jìn)行批量下載到本地!!!\n\n')
                  #運(yùn)行結(jié)束
                  selehw.QuitSele(None)
                  break
              else:
                  continue  

       

       

      huaweiphoto_py3.py如下:

      # -*- coding=utf-8 -*-
      # Create by : zhongtang 
      # Create date : 2018.2.28
      
      
      import json
      import requests
      from requests.adapters import HTTPAdapter
      import html
      
      class HuaWei:
          #華為云服務(wù)登錄
          def __init__(self):
              self.getalbumsUrl= 'https://www.hicloud.com/album/getCloudAlbums.action'
              self.getalbumfileUrl = 'https://www.hicloud.com/album/getCloudFiles.action'
              self.loginHeaders = { }
              self.SReq=requests.session()
              self.SReq.mount('http://', HTTPAdapter(max_retries=3))
              self.SReq.mount('https://', HTTPAdapter(max_retries=3))
              self.OnceMaxFile=100 #單次最大獲取文件數(shù)量
              self.FileNum=0
              self.AlbumList={}
          
      
          #保存相冊(cè)照片地址到文件 ,不同相冊(cè)保存到不同的文件
          def saveFileList2Txt(self,filename,hjsondata,flag):
              if len(hjsondata)<= 0 : return -1
              hjson2 = {}
              try:
                  hjson2 = json.loads(hjsondata)
              except:
                  print('獲取相冊(cè)明細(xì)出錯(cuò)\n')
                  return -1
              
              lfilename = filename+u".txt"
              if flag == 0 : #新建文件
                  print( u'創(chuàng)建相冊(cè)文件'+lfilename+"\n")
                  #新建文件,代表新的相冊(cè)重新開始計(jì)數(shù)
                  self.FileNum = 0
                  f = open(lfilename, 'w')
              else: #追加文件
                  f = open(lfilename, 'a')
              i = 0             
              if hjson2.get("fileList"):
                  for each in hjson2["fileList"]:
                      fileurl= html.unescape(hjson2["fileList"][i]["fileUrl"])
                      f.write(fileurl+"\n")
                      #每一千行分頁
                      self.FileNum += 1
                      if self.FileNum%1000 ==0 :f.write('\n\n\n\n\n\n--------------------page %s ------------------\n\n\n\n\n\n' %(int(self.FileNum/1000)))
                      i += 1
              f.close()
              return i
          
          #循環(huán)讀取相冊(cè)文件
          def getFileList(self,hjsondata,parentkey,childkey):
              #step 3 getCoverFiles.action,循環(huán)取相冊(cè)文件列表,單次最多取100條記錄。
              #每次count都是最大數(shù)量49,不管實(shí)際數(shù)量是否夠,每次currentnum遞增,直到返回空列表。
              #albumIds[]=default-album-2&ownerId=220086000029851117&height=300&width=300&count=49&currentNum=0&thumbType=imgcropa&fileType=0
              #albumIds[]=default-album-1&ownerId=220086000029851117&height=300&width=300&count=49&currentNum=49&thumbType=imgcropa&fileType=0
              #albumIds[]=default-album-1&ownerId=220086000029851117&height=300&width=300&count=49&currentNum=98&thumbType=imgcropa&fileType=0
              #albumIds[]=default-album-2&ownerId=220086000029851117&height=300&width=300&count=49&currentNum=101&thumbType=imgcropa&fileType=0
              #最后一次返回 空列表
              #{"albumSortFlag":true,"code":0,"info":"success!","fileList":[]}
              #第一次取文件時(shí),例如文件總數(shù)量只有2個(gè),count也是放最大值49。
              #albumIds[]=default-album-102-220086000029851117&ownerId=220086000029851117&height=300&width=300&count=49&currentNum=0&thumbType=imgcropa&fileType=0        
              #[{u'photoNum': 2518, u'albumName': u'default-album-1', u'iversion': -1, u'albumId': u'default-album-1', u'flversion': -1, u'createTime': 1448065264550L, u'size': 0},
              #{u'photoNum': 100, u'albumName': u'default-album-2', u'iversion': -1, u'albumId': u'default-album-2', u'flversion': -1, u'createTime': 1453090781646L, u'size': 0}]        
              try:
                  hjson = json.loads(hjsondata)
              except Exception:
                  print ('加載json出錯(cuò)!')
                  return -1
              
              #字典獲取出錯(cuò)
              if not hjson.get(parentkey):
                  print ('加載json根節(jié)點(diǎn)[%s]出錯(cuò)!' %parentkey)
                  return -1
              
              #初始化全局 albumlist
              if not self.AlbumList :
                  self.AlbumList=hjson
              
              for idx,album in enumerate(self.AlbumList[parentkey]):
                  if 'currentNum' not in self.AlbumList[parentkey][idx].keys():
                      self.AlbumList[parentkey][idx]['currentNum']=0
                      
              #循環(huán)保存相冊(cè)
              for each in hjson[parentkey]:
                  #該相冊(cè)已經(jīng)進(jìn)入記錄                
                  paraAlbum={}
                  paraAlbum['albumIds[]'] = each[childkey]
                  paraAlbum['ownerId'] = hjson['ownerId']
                  paraAlbum['height'] = '300'
                  paraAlbum['width'] = '300'
                  paraAlbum['count'] = self.OnceMaxFile
                  paraAlbum['thumbType'] = 'imgcropa'
                  paraAlbum['fileType'] = '0'            
                  itotal= each['photoNum']
                  
                  #取當(dāng)前節(jié)點(diǎn)的當(dāng)前記錄
                  for idx,album in enumerate(self.AlbumList[parentkey]):
                      if each[childkey]==album[childkey]:
                          icurrentnum = self.AlbumList[parentkey][idx]['currentNum'] 
                          break
                  
                  #保存相冊(cè)中所有文件
                  while icurrentnum<itotal:                
                      paraAlbum['currentNum'] = icurrentnum
                      response=self.SReq.post(self.getalbumfileUrl,headers=self.loginHeaders,data=paraAlbum,verify=False)
                      page = response.text
                      #保存下載地址到文本文件中,但不下載文件
                      iret  = self.saveFileList2Txt(each[childkey],page,icurrentnum)
                      if iret >0 :
                          self.AlbumList[parentkey][idx]['currentNum']  += iret 
                          icurrentnum = self.AlbumList[parentkey][idx]['currentNum'] 
                      else:
                          #出錯(cuò)!!!
                          return -1           
              return 1
      
          #step 1 getCloudAlbums,取相冊(cè)列表
          def getAlbumList(self):
              response=self.SReq.post(self.getalbumsUrl,headers=self.loginHeaders,verify=False)
              page=response.text
              '''#返回報(bào)文
              {"ownerId":"220086000029851117","code":0,
              "albumList":[{"albumId":"default-album-1","albumName":"default-album-1","createTime":1448065264550,"photoNum":2521,"flversion":-1,"iversion":-1,"size":0},
                           {"albumId":"default-album-2","albumName":"default-album-2","createTime":1453090781646,"photoNum":101,"flversion":-1,"iversion":-1,"size":0}],
              "ownShareList":[{"ownerId":"220086000029851117","resource":"album","shareId":"default-album-102-220086000029851117","shareName":"微信","photoNum":2,"flversion":-1,"iversion":-1,"createTime":1448070407055,"source":"HUAWEI MT7-TL00","size":0,"ownerAcc":"****","receiverList":[]}],
              "recShareList":[]}'
              '''
              if len(page)<=0 :
                  print( u'取相冊(cè)列表出錯(cuò),無返回報(bào)文!!!\n\n')
              return page

       

      五、運(yùn)行結(jié)果:

      程序會(huì)在當(dāng)前目錄生成華為云相冊(cè)照片下載地址文件,內(nèi)容如下:

      https://d167.g03.dbankcloud.com/file/MDAwMTZBODissQaaaaaaaaaaaaaaaaaaaaQc2CR-znjyRnw../162807b277aaaaaaaaaaaaaaaaaa9ee1/IMG_20170606_141952.jpg?key=AWqIQFqVkEaaaaaaaaaaaaaaaaaaaaaaWNLIosPR_EKv8VQ..&a=220086000029851117-3da1ab76-92808-5840&nsp_ver=3.0
      https://d167.g03.dbankcloud.com/file/MDAwMTZBODhhoFaaaaaaaaaaaaaaaaaaaa7r6jPU67bWTQA../4039a1be5caaaaaaaaaaaaaaaaaac726/IMG_20170605_203519.jpg?key=AWqIQFqVkEaaaaaaaaaaaaaaaaaaaaaajvduIL8cXufhNhQ..&a=220086000029851117-3da1ab76-92808-5840&nsp_ver=3.0
      https://d167.g03.dbankcloud.com/file/MDAwMTZBODgpoWaaaaaaaaaaaaaaaaaaaaaciAQlIVHRbXg../9e336da286aaaaaaaaaaaaaaaaaaf89d/IMG_20170604_171032.jpg?key=AWqIQFqVkEaaaaaaaaaaaaaaaaaaaaaaThkDgJKHpBtiG5w..&a=220086000029851117-3da1ab76-92808-5840&nsp_ver=3.0
      https://d167.g03.dbankcloud.com/file/MDAwMTZBODgUz2aaaaaaaaaaaaaaaaaaaatyFMDr71YpXGg../b3c17582ccaaaaaaaaaaaaaaaaac278b/IMG_20170603_134831.jpg?key=AWqIQFqVkEaaaaaaaaaaaaaaaaaaaaaaTI_xPSzF_VzUsJA..&a=220086000029851117-3da1ab76-92808-5840&nsp_ver=3.0
      https://d167.g03.dbankcloud.com/file/MDAwMTZBODgGfwaaaaaaaaaaaaaaaaaaaad7DLSHH4rwKVA../2722df087baaaaaaaaaaaaaaaaa915e4/IMG_20170603_133833.jpg?key=AWqIQFqVkEaaaaaaaaaaaaaaaaaaaaaaluTQ8grDHok9BzQ..&a=220086000029851117-3da1ab76-92808-5840&nsp_ver=3.0
      https://d167.g03.dbankcloud.com/file/MDAwMTZBODgsrHaaaaaaaaaaaaaaaaaaaatq2yOJ-OnkDtQ../77e0ef0560aaaaaaaaaaaaaaaaa44702/IMG_20170602_183736.jpg?key=AWqIQFqVkEaaaaaaaaaaaaaaaaaaaaaa20WJbfxn-qoqIeQ..&a=220086000029851117-3da1ab76-92808-5840&nsp_ver=3.0
      https://d167.g03.dbankcloud.com/file/MDAwMTZBODiAcDaaaaaaaaaaaaaaaaaaaaEXW-ONoF0Shuw../df033e69ffaaaaaaaaaaaaaaaaa8c1b1/IMG_20170601_185446.jpg?key=AWqIQFqVkEaaaaaaaaaaaaaaaaaaaaaaxIC-spleDG_xxVg..&a=220086000029851117-3da1ab76-92808-5840&nsp_ver=3.0
      https://d167.g03.dbankcloud.com/file/MDAwMTZBODjY8EaaaaaaaaaaaaaaaaaaaaVbr9kC-JU0M8g../d5230d2032aaaaaaaaaaaaaaaaa903b3/IMG_20170601_102059.jpg?key=AWqIQFqVkEaaaaaaaaaaaaaaaaaaaaaa49iM03bK-Cm-Z9g..&a=220086000029851117-3da1ab76-92808-5840&nsp_ver=3.0
      https://d167.g03.dbankcloud.com/file/MDAwMTZBODi04Caaaaaaaaaaaaaaaaaaaaaaw41bSNB4pxBw../6ee510e28aaaaaaaaaaaaaaaaa57cb5a/IMG_20170601_102042.jpg?key=AWqIQFqVkaaaaaaaaaaaaaaaaaaaaaaxlapdsHLoRCSITVw..&a=220086000029851117-3da1ab76-92808-5840&nsp_ver=3.0

      把上述下載鏈接復(fù)制到迅雷,添加批量任務(wù)就可以下載圖片到本地。

       

      以上,-- End -- 

      posted @ 2018-02-27 13:12  黯然銷魂掌2015  閱讀(2426)  評(píng)論(0)    收藏  舉報(bào)

      聯(lián)系方式:qq 16906913

      主站蜘蛛池模板: 色悠悠在线观看入口一区| 亚洲av永久无码精品天堂久久| 亚洲精品熟女一区二区| 国产成人精彩在线视频| 极品蜜桃臀一区二区av| 最新成免费人久久精品| 视频区 国产 图片区 小说区| 欧美人禽杂交狂配| 美日韩不卡一区二区三区| 久久精品国产福利一区二区| 国产精品av中文字幕| 国产AV大陆精品一区二区三区| 国产欧美VA天堂在线观看视频| 囯产精品一区二区三区线| 国产乱色国产精品免费视频 | 成人国产精品一区二区网站公司| 临沧市| 亚洲精品岛国片在线观看| 免费无码黄网站在线观看| 久久人人妻人人爽人人爽| 国语精品一区二区三区| 国产精品午夜av福利| 日韩av中文字幕有码| 精品国产综合成人亚洲区| 精品久久久久无码| 久久亚洲人成网站| 盐源县| 亚洲av成人免费在线| 婷婷综合亚洲| 久久久久亚洲av成人网址| 在线观看无码av五月花| 岫岩| 人成午夜免费大片| www国产精品内射熟女| 国产a网站| 国产h视频在线观看| 陈巴尔虎旗| 美女自卫慰黄网站| 国产亚洲av产精品亚洲| 中文字幕人妻中出制服诱惑| 久久日韩在线观看视频|