在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個用于破解Google驗證碼的方法

開關電源芯片 ? 來源:進擊的Coder ? 作者:崔慶才 ? 2021-09-01 11:16 ? 次閱讀

今天給大家介紹一個用于破解 Google ReCAPTCHA 的方法。

ReCAPTCHA 介紹可能大家還沒聽說過什么是 ReCAPTCHA,可能由于某些原因,這個驗證碼在國內出現不多,不過想必大家應該多多少少見過或用過。它長這個樣子:

這時候,只要我們點擊最前面的復選框,驗證碼算法會首先利用其「風險分析引擎」做一次安全檢測,如果直接檢驗通過的話,我們會直接得到如下的結果:

如果算法檢測到當前系統存在風險,比如可能是陌生的網絡環境,可能是模擬程序,會需要做二次校驗。它會進一步彈出類似如下的內容:

比如上面這張圖,驗證碼頁面會出現九張圖片,同時最上方出現文字「樹木」,我們需要點選下方九張圖中出現「樹木」的圖片,點選完成之后,可能還會出現幾張新的圖片,我們需要再次完成點選,最后點擊「驗證」按鈕即可完成驗證。或者我們可以點擊下方的「耳機」圖標,這時候會切換到聽寫模式,驗證碼會變成這樣:

這時候我們如果能填寫對驗證碼讀的音頻內容,同樣可以通過驗證。這兩種方式都可以通過驗證,驗證完成之后,我們才能完成表單的提交,比如完成登錄、注冊等操作。這種驗證碼叫什么名字?這個驗證碼就是 Google 的 ReCAPTCHA V2 驗證碼,它就屬于行為驗證碼的一種,這些行為包括點選復選框、選擇對應圖片、語音聽寫等內容,只有將這些行為校驗通過,此驗證碼才能通過驗證。相比于一般的圖形驗證碼來說,此種驗證碼交互體驗更好、安全性會更高、破解難度更大。

其實上文所介紹的驗證碼僅僅是 ReCAPTCHA 驗證碼的一種形式,是 V2 的顯式版本,另外其 V2 版本還有隱式版本,隱式版本在校驗的時候不會再顯式地出現驗證頁面,它是通過 JavaScript 將驗證碼和提交按鈕進行綁定,在提交表單的時候會自動完成校驗。除了 V2 版本,Google 又推出了最新的 V3 版本,reCAPTCHA V3 驗證碼會為根據用戶的行為來計算一個分數,這個分數代表了用戶可能為機器人的概率,最后通過概率來判斷校驗是否可以通過。其安全性更高、體驗更好。

體驗那哪里可以體驗到 ReCAPTCHA 呢?我們可以打開這個網站:https://www.google.com/recaptcha/api2/demo,建議科學上網,同時用匿名窗口打開,這樣的話測試不會受到歷史 Cookies 的干擾,如圖所示:

這時候,我們可以看到下方有個 ReCAPTCHA 的窗口,然后點擊之后就出現了一個驗證圖塊。

當然靠人工是能解的,但對于爬蟲來說肯定不行啊,那怎么自動化解呢?

接下來我們就來介紹一個簡單好用的平臺。

解決方案本次我們介紹的一個 ReCAPTCHA 破解服務叫做 YesCaptcha,主頁是 http://yescaptcha.365world.com.cn/,它現在同時可以支持 V2 和 V3版本的破解。

我們這次就用它來嘗試解一下剛才的 ReCAPTCHA 上的 V2 類型驗證碼:https://www.google.com/recaptcha/api2/demo。

簡單注冊之后,可以找到首頁有一個 Token。我們可以復制下來以備后面使用

它有兩個關鍵的 API,一個是創建驗證碼服務任務,另一個是查詢任務狀態,API 如下:

創建任務:http://api.yescaptcha.365world.com.cn/v3/recaptcha/create

查詢狀態:http://api.yescaptcha.365world.com.cn/v3/recaptcha/status

API 文檔可以參考這里:http://docs.yescaptcha.365world.com.cn/

經過 API 文檔可以看到使用的時候可以配置如下參數

參數名是否必須說明

token是請在個人中心獲取 (Token)

siteKey是ReCaptcha SiteKey (固定參數)

siteReferer是ReCaptcha Referer (一般也為固定參數)

captchaType否ReCaptchaV2(默認) / ReCaptchaV3

siteAction否ReCaptchaV3 選填 Action動作 默認verify

minScore否ReCaptchaV3 選填 最小分數(0.1-0.9)

這里就有三個關鍵信息了:

token:就是剛才我們在 YesCaptcha 上復制下來的參數

siteKey:這個是 ReCAPACHA 的標志字符串,稍后我們會演示怎么找。

siteReferer,一般是 ReCAPTCHA 的來源網站的 Referer,比如對于當前的案例,該值就是 https://www.google.com/recaptcha/api2/demo

那 siteKey 怎么找呢?其實很簡單,我們看下當前 ReCAPTCHA 的 HTML 源碼,從源碼里面找一下就好了

這里可以看到每個 ReCAPTCHA 都對應一個 div,div 有個屬性叫做 date-sitekey,看這里的值就是:

6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-

好,萬事俱備了,只差代碼了!

開工我們就用最簡單 requests 來實現下吧,首先把常量定義一下:

TOKEN = ‘50a07xxxxxxxxxxxxxxxxxxxxxxxxxf78’ # 請替換成自己的TOKEN

REFERER = ‘https://www.google.com/recaptcha/api2/demo’

BASE_URL = ‘http://api.yescaptcha.365world.com.cn’

SITE_KEY = ‘6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-’ # 請替換成自己的SITE_KEY

這里我們定義了這么幾個常量:

TOKEN:就是網站上復制來的 token

REFERER:就是 Demo 網站的鏈接

API_BASE_URL:就是 YesCaptcha 的 API 網址

SITE_KEY:就是剛才我們找到的 data-sitekey

然后我們定義一個創建任務的方法:

def create_task():

url = f“{BASE_URL}/v3/recaptcha/create?token={TOKEN}&siteKey={SITE_KEY}&siteReferer={REFERER}”

try:

response = requests.get(url)

if response.status_code == 200:

data = response.json()

print(‘response data:’, data)

return data.get(‘data’, {}).get(‘taskId’)

except requests.RequestException as e:

print(‘create task failed’, e)

這里就是調 API 來創建任務,沒什么好說的。

如果創建成功之后會得到一個 task_id,接下來我們就需要用這個 task_id 來輪詢查看任務的狀態,定義如下的這么一個方法:

def polling_task(task_id):

url = f“{BASE_URL}/v3/recaptcha/status?token={TOKEN}&taskId={task_id}”

count = 0

while count < 120:

try:

response = requests.get(url)

if response.status_code == 200:

data = response.json()

print(‘polling result’, data)

status = data.get(‘data’, {}).get(‘status’)

print(‘status of task’, status)

if status == ‘Success’:

return data.get(‘data’, {}).get(‘response’)

except requests.RequestException as e:

print(‘polling task failed’, e)

finally:

count += 1

time.sleep(1)

這里就是設置了最長輪詢次數 120 次,請求的 API 就是查詢任務狀態的 API,會得到一個任務狀態的結果,如果結果是 Success,那就證明任務成功了,解析其中的 response 結果就是驗證碼破解之后得到的 token。

兩個方法調用一下:

if __name__ == ‘__main__’:

task_id = create_task()

print(‘create task successfully’, task_id)

response = polling_task(task_id)

print(‘get response:’, response[0:40]+‘。。。’)

運行結果類似如下:

response data: {‘status’: 0, ‘msg’: ‘ok’, ‘data’: {‘taskId’: ‘1479436991’}}

create task successfully 1479436991

polling result {‘status’: 0, ‘msg’: ‘ok’, ‘data’: {‘status’: ‘Working’}}

status of task Working

polling result {‘status’: 0, ‘msg’: ‘ok’, ‘data’: {‘status’: ‘Working’}}

status of task Working

polling result {‘status’: 0, ‘msg’: ‘ok’, ‘data’: {‘status’: ‘Working’}}

status of task Working

polling result {‘status’: 0, ‘msg’: ‘ok’, ‘data’: {‘status’: ‘Success’, ‘response’: ‘03AGdBq27-ABqvNmgq96iuprN8Mvzfq6_8noknIed5foLb15oWvWVksq9KesDkDd7dgMMr-

UmqULZduXTWr87scJXl3djhl2btPO721eFAYsVzSk7ftr4uHBdJWonnEemr9dNaFB9qx5pnxr3P24AC7cCfKlOH_XARaN4pvbPNxx_UY5G5fzKUPFDOV14nNkCWl61jwwC0fuwetH1q99r4hBQxyI6XICD3PiHyHJMZ_-

wolcO1R9C90iGQyjzrSMiNqErezO24ODCiKRyX2cVaMwM9plbxDSuyKUVaDHqccz8UrTNNdJ4m2WxKrD9wZDWaSK10Ti1LgsqOWKjKwqBbuyRS_BkSjG6OJdHqJN4bpk_jAcPMO13wXrnHBaXdK4FNDR9-

dUvupHEnr7QZEuNoRxwl8FnO2Fgwzp2sJbGeQkMbSVYWdAalE6fzJ8NwsFJxCdDyeyO817buBtvTJ4C06C1uZ92fpPTeYGJwbbicOuqbGfHNTyiSJeRNmt-5RKz0OUiPJOPnmVKGlWBOqwbwCW1WZt-E-

hH4FEg4En5TITmmPb_feS9dWKUxudn1U0hHk2vV9PerjZLtI7F67KtgmcqRrARPbwnc6KyAi3Hy1hthP92lv4MRIcO2jx0Llvsja-G2nhjZB0ZoJwkb9106pmqldiwlXxky4Dcg7VPStiCYJvhQpRYol7Iq1_ltU2tyhMqsu_Xa8Z6Mr5ykRCLnmlLb8DV8isndrdwp84wo_vPARGRj7Up9ov-

ycb5lDKTf1XRaHiMCa8d2WLy0Pjco9UnsRAPw0FW3MsBJah6ryHUUDho7ffhUUgV1k86ryJym6xbWch1sVC4D5owzrCFn6L-rSLc5SS1pza2zU5LK4kAZCmbXNRffiFrhUY8nP4T1xaR2KMhIaN8HhJQpR8sQh1Azc-QkDy4rwbYmxUrysYGMrAOnmDx9z7tWQXbJE4IgCVMx5wihSiE-T8nbF5y1aJ0Ru9zqg1nZ3GSqsucSnvJA8HV5t9v0QSG5cBC1x5HIceA-2uEGSjwcmYOMw8D_65Dl-d6yVk1YN2FZCgMWY5ewzB1RAFN1BMqKoITQJ64jq3lKATpkc5i7aTA2bRGQyXrbDyMRIrVXKnYMHegfMbDn0l4O81a8vxmevLspKkacVPiqLsAe-

73jAxMvsOqaG7cKxMQO9CY3qbtD55YgN0W4p2jyNSVz3aEpffHRqYyWMsRI5LddLgaZQDoHHgGUhV580PSIdZJ5eKd0gOjxIYxKlr0IgbMWRmsG_TgDNImy1c5oey8ojl-

zWpOQW7bnfq5Z4tZ10_sCTfoOZVLqRuOsqB1OOO9pLRQojLBP0HUiGhRAr_As9EIDu6F9NIQfdAmCaVvavJbi1CZITFjcywP-tBrHsxpwkCXlwl996MK_XyEDuyWnJVGiVSthUMY306tIh1Xxj93W3KQJCzsfJQcjN-

3lGLLeDFddypHyG4yrpRqRHHBNyiNJHgxSk5SaShEhXvByjkepvhrKX3kJssCU04biqqmkrQ49GqBV9OsWIy0nN3OJTx8v05MP8aU8YYkYBF01UbSff4mTfLAhin6iWk84Y074mRbe2MbgFAdU58KnCrwYVxcAR8voZsFxbxNwZXdVeexNx5HlIlSgaAHLWm2kFWmGPPW-ZA7R8Wst-mc7oIKft5iJl8Ea0YFz8oXyVgQk1rd9nDR3xGe5mWL1co0MiW1yvHg’}}

如果其返回的是如上格式的數據,就代表 ReCAPTCHA 驗證碼已經識別成功了,其返回的 response 字段的內容就是識別的 token,我們直接拿著這個 token 放到表單里面提交就成功了。

那這個 token 怎么來用呢?其實如果我們用瀏覽器驗證驗證成功之后,點擊表單提交的時候,在其表單里面會把一個 name 叫做 g-recaptcha-response 的 textarea 賦值,如果驗證成功,它的 value 值就是驗證之后得到的 token,這個會作為表單提交的一部分發送到服務器進行驗證。如果這個字段校驗成功了,那就沒問題了。

所以,如上的過程相當于為我們模擬了點選驗證碼的過程,其最終得到的這個 token 其實就是我們應該賦值給 name 為 g-recaptcha-response 的內容。那么怎么賦值呢?很簡單,用 JavaScript 就好了。我們可以用 JavaScript 選取到這個 textarea,然后直接賦值即可,代碼如下:

document.getElementById(“g-recaptcha-response”).innerHTML=“TOKEN_FROM_YESCAPTCHA”;

注意這里的 TOKEN_FROM_YESCAPTCHA 需要換成剛才我們所得到的 token 值。我們做爬蟲模擬登錄的時候,假如是用 Selenium、Puppeteer 等軟件,在模擬程序里面,只需要模擬執行這段 JavaScript 代碼,就可以成功賦值了。執行之后,直接提交表單,我們查看下 Network 請求:

可以看到其就是提交了一個表單,其中有一個字段就是 g-recaptcha-response,它會發送到服務端進行校驗,校驗通過,那就成功了。所以,如果我們借助于 YesCaptcha 得到了這個 token,然后把它賦值到表單的 textarea 里面,表單就會提交,如果 token 有效,就能成功繞過登錄,而不需要我們再去點選驗證碼了。最后我們得到如下成功的頁面:

當然我們也可以使用 requests 來模擬完成表單提交:

def verify(response):

url = “https://www.google.com/recaptcha/api2/demo”

data = {“g-recaptcha-response”: response}

response = requests.post(url, data=data)

if response.status_code == 200:

return response.text

最后完善一下調用:

if __name__ == ‘__main__’:

task_id = create_task()

print(‘create task successfully’, task_id)

response = polling_task(task_id)

print(‘get response:’, response[0:40]+‘。。。’)

result = verify(response)

print(result)

運行結果如下:

response data: {‘status’: 0, ‘msg’: ‘ok’, ‘data’: {‘taskId’: ‘1479436991’}}

create task successfully 1479436991

polling result {‘status’: 0, ‘msg’: ‘ok’, ‘data’: {‘status’: ‘Working’}}

status of task Working

polling result {‘status’: 0, ‘msg’: ‘ok’, ‘data’: {‘status’: ‘Working’}}

status of task Working

polling result {‘status’: 0, ‘msg’: ‘ok’, ‘data’: {‘status’: ‘Working’}}

status of task Working

polling result {‘status’: 0, ‘msg’: ‘ok’, ‘data’: {‘status’: ‘Success’, ‘response’: ‘03AGdBq27-ABqvNmgq96iuprN8Mvzfq6_8noknIed5foLb15oWvWVksq9KesDkDd7dgMMr-

UmqULZduXTWr87scJXl3djhl2btPO721eFAYsVzSk7ftr4uHBdJWonnEemr9dNaFB9qx5pnxr3P24AC7cCfKlOH_XARaN4pvbPNxx_UY5G5fzKUPFDOV14nNkCWl61jwwC0fuwetH1q99r4hBQxyI6XICD3PiHyHJMZ_-

wolcO1R9C90iGQyjzrSMiNqErezO24ODCiKRyX2cVaMwM9plbxDSuyKUVaDHqccz8UrTNNdJ4m2WxKrD9wZDWaSK10Ti1LgsqOWKjKwqBbuyRS_BkSjG6OJdHqJN4bpk_jAcPMO13wXrnHBaXdK4FNDR9-

dUvupHEnr7QZEuNoRxwl8FnO2Fgwzp2sJbGeQkMbSVYWdAalE6fzJ8NwsFJxCdDyeyO817buBtvTJ4C06C1uZ92fpPTeYGJwbbicOuqbGfHNTyiSJeRNmt-5RKz0OUiPJOPnmVKGlWBOqwbwCW1WZt-E-

hH4FEg4En5TITmmPb_feS9dWKUxudn1U0hHk2vV9PerjZLtI7F67KtgmcqRrARPbwnc6KyAi3Hy1hthP92lv4MRIcO2jx0Llvsja-G2nhjZB0ZoJwkb9106pmqldiwlXxky4Dcg7VPStiCYJvhQpRYol7Iq1_ltU2tyhMqsu_Xa8Z6Mr5ykRCLnmlLb8DV8isndrdwp84wo_vPARGRj7Up9ov-ycb5lDKTf1XRaHiMCa8d2WLy0Pjco9UnsRAPw0FW3MsBJah6ryHUUDho7ffhUUgV1k86ryJym6xbWch1sVC4D5owzrCFn6L-rSLc5SS1pza2zU5LK4kAZCmbXNRffiFrhUY8nP4T1xaR2KMhIaN8HhJQpR8sQh1Azc-QkDy4rwbYmxUrysYGMrAOnmDx9z7tWQXbJE4IgCVMx5wihSiE-

T8nbF5y1aJ0Ru9zqg1nZ3GSqsucSnvJA8HV5t9v0QSG5cBC1x5HIceA-2uEGSjwcmYOMw8D_65Dl-d6yVk1YN2FZCgMWY5ewzB1RAFN1BMqKoITQJ64jq3lKATpkc5i7aTA2bRGQyXrbDyMRIrVXKnYMHegfMbDn0l4O81a8vxmevLspKkacVPiqLsAe-

73jAxMvsOqaG7cKxMQO9CY3qbtD55YgN0W4p2jyNSVz3aEpffHRqYyWMsRI5LddLgaZQDoHHgGUhV580PSIdZJ5eKd0gOjxIYxKlr0IgbMWRmsG_TgDNImy1c5oey8ojl-

zWpOQW7bnfq5Z4tZ10_sCTfoOZVLqRuOsqB1OOO9pLRQojLBP0HUiGhRAr_As9EIDu6F9NIQfdAmCaVvavJbi1CZITFjcywP-tBrHsxpwkCXlwl996MK_XyEDuyWnJVGiVSthUMY306tIh1Xxj93W3KQJCzsfJQcjN-

3lGLLeDFddypHyG4yrpRqRHHBNyiNJHgxSk5SaShEhXvByjkepvhrKX3kJssCU04biqqmkrQ49GqBV9OsWIy0nN3OJTx8v05MP8aU8YYkYBF01UbSff4mTfLAhin6iWk84Y074mRbe2MbgFAdU58KnCrwYVxcAR8voZsFxbxNwZXdVeexNx5HlIlSgaAHLWm2kFWmGPPW-ZA7R8Wst-mc7oIKft5iJl8Ea0YFz8oXyVgQk1rd9nDR3xGe5mWL1co0MiW1yvHg’}}

status of task Success

get response: 03AGdBq27-ABqvNmgq96iuprN8Mvzfq6_8noknIe...

<!DOCTYPE HTML>ReCAPTCHA demo

href=“https://www.gstatic.com/recaptcha/releases/TbD3vPFlUWKZD-9L4ZxB0HJI/demo__ltr.css” type=“text/css”>

Verification Success... Hooray!

最后就可以發現,模擬提交之后,結果會有一個 Verification Success... Hooray! 的文字,就代表驗證成功了!

至此,我們就成功完成了 ReCAPTCHA 的破解。

上面我們介紹的是 requests 的實現,當然使用 Selenium 等工具也可以實現,具體的 Demo 在文檔也寫好了,請大家參考文檔的說明使用即可。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 谷歌
    +關注

    關注

    27

    文章

    6173

    瀏覽量

    105634
  • 驗證碼
    +關注

    關注

    2

    文章

    20

    瀏覽量

    4722

原文標題:我又找到了一個破解谷歌驗證碼的新方案!

文章出處:【微信號:gh_3980db2283cd,微信公眾號:開關電源芯片】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    淺談加密芯片的破解方法和對應加密方案改進設計

    上述加密方法的,趕緊去檢查下你的HEX或BIN下載吧,看看是不是自己就能輕松破解自己的方案了。。。 那么有沒有好的方法來保護產品呢,對于使用邏輯加密芯片的加密方案,開發者可以通過以下
    發表于 12-20 15:31

    淺談加密芯片的破解方法和加密方案改進設計

    加密方法的,趕緊去檢查下你的HEX或BIN下載吧,看看是不是自己就能輕松破解自己的方案了。。。 那么有沒有好的方法來保護產品呢,對于使用邏輯加密芯片的加密方案,開發者可以通過以下的
    發表于 12-20 15:10

    如何使用ASCII進行編碼

    ASCII(American Standard Code for Information Interchange,美國信息交換標準代碼)是種字符編碼標準,用于文本電子交換。它主要包括128
    的頭像 發表于 11-10 09:37 ?682次閱讀

    調用云服務認證體系

    和密碼。 第三方登錄選項: 提供使用社交賬號(如微信、Facebook、Google等)直接登錄的選項。 忘記密碼模塊: 找回密碼流程: 用戶輸入注冊時的郵箱/手機號,系統發送重置鏈接或驗證碼。 用戶
    發表于 09-05 09:39

    機器學習中的交叉驗證方法

    在機器學習中,交叉驗證(Cross-Validation)是種重要的評估方法,它通過將數據集分割成多個部分來評估模型的性能,從而避免過擬合或欠擬合問題,并幫助選擇最優的超參數。本文將詳細探討幾種
    的頭像 發表于 07-10 16:08 ?1257次閱讀

    使用google-translate和wwe合并后無法使用google-tts怎么解決?

    我打算使用lyrat-mini做一個使用喚醒詞喚醒然后后續通過google-sr和google-tts進行交流的聊天機器人,但是當我合并了adf的例子中的wwe和google-tran
    發表于 06-28 06:05

    步進電機撥開關怎樣設置最合理?

    ? ? ? 步進電機撥開關設置是步進電機控制系統中的重要環節,合理的設置可以提高系統的穩定性和可靠性,延長電機的使用壽命。本文將詳細介紹步進電機撥開關的設置
    的頭像 發表于 06-23 16:08 ?1217次閱讀
    步進電機撥<b class='flag-5'>碼</b>開關怎樣設置最合理?

    步進電機撥開關怎樣設置最合理

    步進電機撥開關設置是步進電機控制系統中的重要環節,合理的設置可以提高系統的穩定性和可靠性,延長電機的使用壽命。本文將詳細介紹步進電機撥開關的設置
    的頭像 發表于 06-11 18:20 ?1279次閱讀

    步進電機驅動器撥開關的調節方法

    步進電機驅動器作為控制步進電機運行的關鍵設備,其性能的穩定性和精確度直接影響到整個系統的運行效果。撥開關作為步進電機驅動器的重要組成部分,其設置和調節對于保證步進電機的正常運行至關重要。本文將詳細介紹步進電機驅動器撥
    的頭像 發表于 06-11 14:37 ?3222次閱讀

    遠距離掃模組,用于停車場掃

    技術,具備大視窗口極速掃描功能,并且對手機屏幕的識讀進行了特別優化,從而可以在較遠的距離和各種角度下快速準確地識別二維。在停車場,遠距離掃模組常常被用于實現
    的頭像 發表于 06-06 14:29 ?363次閱讀
    遠距離掃<b class='flag-5'>碼</b>模組,<b class='flag-5'>用于</b>停車場掃<b class='flag-5'>碼</b>

    西門子PLC實現動態加密計時催款功能的程序設計

    當調試人員在項目調試完成后,設置到計時天數,當天數到達后設備鎖機,HMI上跳出解鎖界面,這個時候點擊HMI上的生成解鎖按鈕,生成解鎖(解鎖
    的頭像 發表于 04-24 11:05 ?1910次閱讀
    西門子PLC實現動態加密計時催款功能的程序設計

    Google賬戶登錄頁面支持使用Windows Hello驗證身份

    谷歌對通行的使用說明描述為:“相比獨立密碼,通行是更為便捷且保密的選擇。用戶將借此通過指紋、面部識別或設備屏保(例如PIN)來登錄Google賬戶。”
    的頭像 發表于 03-29 13:46 ?635次閱讀

    sim卡pin怎么設置 pin和puk有什么區別

    可以設置PIN以及PUK。PIN是個人
    的頭像 發表于 02-19 16:20 ?4791次閱讀

    電腦的pin是什么?PIN和密碼有什么區別?電腦如何設置pin

    電腦的pin是什么?PIN和密碼有什么區別?電腦如何設置pin? 電腦的PIN是個人識別號碼的簡稱,是
    的頭像 發表于 01-17 11:17 ?3.1w次閱讀

    鴻蒙實戰基礎(ArkTS)-窗口管理

    不支持該操作。 驗證成功跳轉到首頁 在這個章節中,我們需要完成登錄后界面布局的編寫,并實現驗證成功跳轉的功能。主要涉及以下兩方面: 校驗成功后,銷毀驗證碼校驗子窗口。 通知登錄主窗口
    發表于 01-12 17:51
    主站蜘蛛池模板: 亚洲成在人线中文字幕| 日本乱妇| 999影院成 人在线影院 | 亚洲天堂成人在线| 亚洲无吗在线视频| 午夜影院黄| 爱操视频在线观看| 久热福利| 日日操夜夜操免费视频| 亚洲黄网址| 波多野结衣在线网站| 精品一区二区视频| 美女国产一区| 欧美另类videos| 欧美午夜视频在线观看| 色综合天天综合| 四虎影视永久在线精品免费播放| 亚洲免费影视| 日韩xx00| 欧美三级视频在线| 韩国三级床戏合集| 国产免费播放一区二区三区| 久久影院朴妮唛| 久久久久久久国产视频| 久久这里只有精品免费视频| 国产三级中文字幕| 国产产一区二区三区久久毛片国语 | 色综合亚洲天天综合网站| yyy6080韩国三级理论| 日韩孕交| 精品一区亚洲| aaaaaa精品视频在线观看| 五月天婷婷激情| 色多多视频在线观看播放| 三级在线观看网站| 狠狠插综合网| www.黄色免费| 夜夜做夜夜爽| 手机在线看| 久操视频免费观看| riav久久中文一区二区|