国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python使用Socket(Https)Post登錄百度的實現(xiàn)代碼

2019-11-25 18:42:46
字體:
供稿:網(wǎng)友

登錄百度,首先當(dāng)然是先抓百度的登錄包 ,由于是網(wǎng)頁登錄,最方便的自然是httpwatch了,我使用的測試賬號是itiandatest1,密碼是itianda,抓包結(jié)果:

復(fù)制代碼 代碼如下:

POST /?login HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: https://passport.baidu.com/?login&tpl=mn
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Alexa Toolbar; BOIE9;ZHCN)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: passport.baidu.com
Content-Length: 243
Connection: Keep-Alive
Cache-Control: no-cache

登錄包抓到了,下面開始寫代碼:

復(fù)制代碼 代碼如下:

import socket
import ssl
sock = ssl.wrap_socket(socket.socket())

ssl是專門用來處理https的模塊,我們使用該模塊的wrap_socket函數(shù)生成一個SSLSocket對象。

然后建立連接:
復(fù)制代碼 代碼如下:

sock.connect(('passport.baidu.com', 443))

這里需要注意的是https使用443端口,不是80。

之后發(fā)送數(shù)據(jù):

復(fù)制代碼 代碼如下:

data = '''/
POST /?login HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: https://passport.baidu.com/?login&tpl=mn
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Alexa Toolbar; BOIE9;ZHCN)
Content-Type: application/x-www-form-urlencoded
Host: passport.baidu.com
Content-Length: 243
Connection: Keep-Alive
Cache-Control: no-cache
tpl_ok=&next_target=&tpl=mn&skip_ok=&aid=&need_pay=&need_coin=&pay_method=&u=http%3A%2F%2Fwww.baidu.com%2F&return_method=get&more_param=&return_type=&psp_tt=0&password=itianda&safeflg=0&isphone=tpl&username=itiandatest1&verifycode=&mem_pass=on/
'''
sock.sendall(data)

需要注意的是sendall之后不能調(diào)用shutdown方法。

其余部分就和普通的socket處理方式?jīng)]什么差別了 :
復(fù)制代碼 代碼如下:

recv_data = sock.recv(8192)
sock.close()
print recv_data

由于我們只需要cookie信息,所以只接收少量數(shù)據(jù)就可以了。

登錄成功的標志是服務(wù)器返回含有BDUSS的set-cookie:

復(fù)制代碼 代碼如下:

HTTP/1.1 200 OK
Set-Cookie: BAIDUID=DB464E1EBA6571FB82D70460D6AAB666:FG=1; max-age=946080000; expires=Wed, 11-Dec-41 17:18:17 GMT; domain=.baidu.com; path=/; version=1
P3P: CP=" OTI DSP COR IVA OUR IND COM "
Date: Mon, 19 Dec 2011 17:18:17 GMT
Server: Apache
P3P: CP=" OTI DSP COR IVA OUR IND COM "
P3P: CP=" OTI DSP COR IVA OUR IND COM "
P3P: CP=" OTI DSP COR IVA OUR IND COM "
Set-Cookie: BAIDUID=26FD0CB5389BF4699C447982D8080239:FG=1; expires=Wed, 11-Dec-41 17:18:17 GMT; max-age=946080000; path=/; domain=.baidu.com; version=1
Set-Cookie: BAIDUID=26FD0CB5389BF4698191E4134CACEA29:FG=1; expires=Wed, 11-Dec-41 17:18:17 GMT; max-age=946080000; path=/; domain=.baidu.com; version=1
Set-Cookie: BDUSS=dTajkzWTFWR3hXT3Jsc09LdkNsZ011YlZka340VWtqNkZzbW0tUTdOUFp-aFpQQVFBQUFBJCQAAAAAAAAAAAouTSCLkioVaXRpYW5kYXRlc3QxAAAAAAAAAAAAAAAAAAAAAAAAAADgmoV5AAAAAOCahXkAAAAAuWZCAAAAAAAxMC42NS40NNlx707Zce9OWT; expires=Tue, 01 Jan 2030 00:00:00 GMT; path=/; domain=.baidu.com
Set-Cookie: PTOKEN=16ba4a120f070f3cc759a817981c2516; expires=Tue, 01 Jan 2030 00:00:00 GMT; path=/; domain=passport.baidu.com; HttpOnly
Set-Cookie: STOKEN=fda94395cd4ae4661cefd3a4017a8454; expires=Tue, 01 Jan 2030 00:00:00 GMT; path=/; domain=passport.baidu.com
Set-Cookie: USERID=626167789a799e630e60fb27466fa80e; expires=Tue, 01 Jan 2030 00:00:00 GMT; path=/; domain=.baidu.com
Content-Type: text/html;charset=gbk
Cache-Control: no-cache
Pragma: no-cache
Content-Encoding: none
Content-Length: 850
Connection: close

OK,登陸成功。
本文來自: itianda's blog

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 平南县| 安吉县| 乌鲁木齐县| 彭山县| 蓬安县| 桓仁| 赣州市| 唐河县| 泉州市| 临颍县| 兴义市| 五原县| 井冈山市| 会同县| 乐都县| 萍乡市| 云南省| 来宾市| 凤冈县| 黄浦区| 吉木萨尔县| 平果县| 鄂托克前旗| 和顺县| 剑阁县| 天津市| 揭阳市| 马边| 白水县| 罗田县| 会泽县| 冕宁县| 桃园市| 乳源| 天柱县| 商南县| 新和县| 沈丘县| 界首市| 柳州市| 德令哈市|