日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux curl模拟登录网页

發布時間:2023/12/9 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux curl模拟登录网页 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有時在批量抓取網站頁面內容時,是需要處于登錄狀態的,否則無法獲取。curl這個強大的工具可以完成這個工作。之前最好也先了解一下http POST方法,網站登錄大都是用這個辦法。

本文基本上參考這篇文章,來自依云's Blog,是archlinux中文論壇的百合仙子大大寫的,他參考的gihub上一個百度網盤資源進行訪問的小程序。我只是根據理解改了幾個小地方,轉載請注明出處


以百度為例?
先保存用戶變量

$?ACCOUNT=百度帳號$?PASS=帳號的密碼

第一步

訪問百度,取得cookie,保存到cookies. 查看文件可知cookie名為BAIDUID

$?curl?-c?cookies?www.baidu.com

(#可以加 -sS 安靜模式,不顯示進度,其中S表示只顯示錯誤;-o /dev/null 將眼花的輸出扔掉)

第二步

帶著cookie訪問這個地址,得到$TOKEN$

$?TOKEN=$(curl?-b?cookies?-sS?"https://passport.baidu.com/v2/api/?getapi&tpl=mn&apiver=v3&class=login&tt=$(date?+%s)&logintype=dialogLogin"?|?tr?"'"?'"'?|?json_pp?-t?dumper?-json_opt?pretty?|?grep?token?|?cut?-d\'?-f4)

第三步

帶著cookie , $TOKEN$對這個地址訪問

$curl?-b?cookies?-c?cookies?https://passport.baidu.com/v2/api/?logincheck&token=$TOKEN$&tpl=mn&apiver=v3&tt=$(date?+%s)&username=$ACCOUNT&isphone=false

返回下面內容

{"errInfo":{?"no":?"0"?},?"data":?{?"codeString"?:?"",?"vcodetype"?:?""?}}

要是讓輸入驗證碼的話就哭了…….但第一次登錄一般沒問題?
(#curl -b 和 -c 參數同時使用表示當前目錄下的cookies文件讀取 cookie 數據,如果接收新的到的 cookie,就寫到同一個文件里去

第四步

使用用戶信息登陸:

curl?-b?cookies?-c?cookies?--compressed?-sS?'https://passport.baidu.com/v2/api/?login'?-H?'Content-Type:?application/x-www-form-urlencoded'?--data?"staticpage=http%3A%2F%2Fpan.baidu.com%2Fres%2Fstatic%2Fthirdparty%2Fpass_v3_jump.html&charset=utf-8&token=$TOKEN&tpl=mn&apiver=v3&tt=$(date?+%s083)&codestring=&safeflg=0&u=http%3A%2F%2Fpan.baidu.com%2F&isPhone=false&quick_user=0&logintype=basicLogin&username=$ACCOUNT&password=$PASS&verifycode=&mem_pass=on&ppui_logintime=57495&callback=parent.bd__pcbs__ax1ysj"?|?grep?-F?err_no

我這里錯誤碼顯示為0,表示成功,可能是別的值

第五步

登陸成功之后就可以調用網盤 API了,驗證是否成功

  • 獲取容量:

    $curl -b cookies -c cookies 'http://pan.baidu.com/api/quota'?
    返回:

    {“errno”:0,“used”:0,“total”:5368709120,“request_id”:4959306489643694116}

  • 列出根目錄下的文件信息:

    $ curl -b cookies -c cookies 'http://pan.baidu.com/api/list' | json_pp?
    $ curl -b cookies -c cookies 'http://pan.baidu.com/api/list?dir=/test' | json_pp

  • 建立目錄:

    $ curl -b cookies -c cookies 'http://pan.baidu.com/api/create' -F path=/測試curl -F isdir=1 -F size= -F block_list='[]' -F method=post

  • 可看到返回中有這幾行:

    "path"?:?"/測試curl",?????"isdir"?:?1,?????"size"?:?0,?????"fs_id"?:?1083516221491878,?????"category"?:?6,?????"server_filename"?:?"測試curl",

    附注:

    • 第二步中取得TOKEN時,要解析返回的json數據,可以不用json_pp, 也可以用別的工具,網上可以搜到不少,作者原文用的是jshon

    • 第四步登錄中的用戶信息,各字段如下(參考原作):

      staticpage:http://www.baidu.com/cache/user/html/v3Jump.html // baidu登錄后跳轉的地址?
      charset:UTF-8 // 編碼字符集?
      token:$TOKEN$?
      tpl:mn?
      apiver:v3 //apiver 的值是固定的 API的版本號?
      tt:當前時間?
      codestring:留空?
      isPhone:false //如果用手機號碼登錄則ture 否則為 false?
      safeflg:0?
      u:http://www.baidu.com/?
      quick_user:0?
      usernamelogin:1?
      splogin:rate?
      username:用戶名?
      password:密碼明文?
      verifycode: //驗證碼,如果沒要求驗證碼,就為空?
      mem_pass:on //記住密碼?
      ppui_logintime:5000 //是一些登錄用時間的,給個7000~10000的隨機數就好了?
      callback:parent.bdpcbsoa36qm


    轉載于:https://blog.51cto.com/zlyang/1728256

    總結

    以上是生活随笔為你收集整理的linux curl模拟登录网页的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。