河南省南阳市建设局网站,网站关键字在哪设置,做网站学的什么专业,中文电子商务网站模板有时在批量抓取网站页面内容时#xff0c;是需要处于登录状态的#xff0c;否则无法获取。curl这个强大的工具可以完成这个工作。之前最好也先了解一下http POST方法#xff0c;网站登录大都是用这个办法。本文基本上参考这篇文章,来自依云s Blog#xff0c;是archlinux中文… 有时在批量抓取网站页面内容时是需要处于登录状态的否则无法获取。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/?getapitplmnapiverv3classlogintt$(date %s)logintypedialogLogin | 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/?loginchecktoken$TOKEN$tplmnapiverv3tt$(date %s)username$ACCOUNTisphonefalse返回下面内容{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 staticpagehttp%3A%2F%2Fpan.baidu.com%2Fres%2Fstatic%2Fthirdparty%2Fpass_v3_jump.htmlcharsetutf-8token$TOKENtplmnapiverv3tt$(date %s083)codestringsafeflg0uhttp%3A%2F%2Fpan.baidu.com%2FisPhonefalsequick_user0logintypebasicLoginusername$ACCOUNTpassword$PASSverifycodemem_passonppui_logintime57495callbackparent.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 isdir1 -F size -F block_list[] -F methodpost可看到返回中有这几行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