以前在一次京東秒殺活動中使用selenium模擬登陸過京東,但最後沒搶到,不知是運氣不佳還是selenium太慢,這次用requests不知能否成功,以下只是模擬登陸的具體思路和**。一、思路
模擬登陸大致模式分三個步驟二、下面上**1、試探
開啟瀏覽器除錯工具(我用的是firefox+chrome),在登陸頁面輸入賬號、密碼時故意輸錯,檢視提交了那些資料,如下圖
在紅色方框裡的就是我們要提交的資料,注意前面的字段,這些我們基本都可以從原始檔裡提取出來。
2、準備資料(post引數)
我們可以把提取出的資料加到請求裡,這裡我們要注意提交的**,在**後面大部分都要加引數的,這時我們就要分析再構造了;如果有驗證碼的話還要進行驗證碼的提取,這也是個坑,
這裡我們可以利用除錯工具檢視驗證碼位址,對我們分析很有幫助的。
3、嘗試登陸,如果沒成功就檢查前面的資料是否全且正確。
python
# _*_coding:utf-8 _*_
__author__ = 'leiyang'
__date__ = '2017-10-1 8:54'
# 模擬登陸京東
import requests
from lxml import etree
import json
import time
from pil import image
s = requests.session()
headers =
#先獲取登陸頁面,從中提取出post引數
page = s.get("", headers=headers).text
html = etree.html(page)
uuid = html.xpath("//input[@id='uuid']/@value")[0]
eid = html.xpath("//input[@id='eid']/@value")[0]
fp = html.xpath("//input[@id='sessionid']/@value")[0]
_t = html.xpath("//input[@id='token']/@value")[0]
logintype = html.xpath("//input[@id='logintype']/@value")[0]
pubkey = html.xpath("//input[@id='pubkey']/@value")[0]
sa_token = html.xpath("//input[@id='sa_token']/@value")[0]
# 獲取驗證碼
img_url = "" + str(uuid) + "&uid=" + str(uuid) + "&yys=" + str(
int(time.time() * 1000))
img_headers =
re = s.get(img_url, headers=img_headers )
with open("d://jingdong_img.jpeg", "wb") as f:
f.write(re.content)
# 如果你想讓驗證碼自動彈出來就把下面2行的注釋去掉
# im = image.open("d://jingdong_img.jpeg")
# im.show()
verify_code = input("輸入驗證碼:")
#把上面我們準備的資料填充到字典裡
data =
post_url = "" + str(
uuid)+"&r=0.6335209684602039&version=2015"
r = s.post(post_url, headers=headers, data=data)
print(r.text)#如果出現'success'字樣,就算成功了。
g=s.get("")
print(g.text)#進入個人中心,驗證是否成功。
至此模擬登陸京東完畢,總結一下要注意的點由於需要手動輸入驗證碼,如果要秒殺的話肯定來不及,我的思路是提前5分鐘讓程式先跑起來,在程式中加定時time.sleep(time),time等於秒殺時間減去當前時間。ok!但願我有乙個好運氣,搶到一些什麼,方不辜負我這一整天的心血。2017-10-1。驗證碼位址和登陸提交位址都需要構造
獲取驗證碼的頭部資訊與登陸提交時的頭部資訊不同
firebox除錯工具是個好用且方便的利器,熟練使用可以更快的分析
Python模擬登陸京東
1 開啟京東登陸網頁 2 開啟瀏覽器除錯面板 接著輸入賬號密碼進行登陸 此時在瀏覽器除錯面板network捕捉到網路資訊 在除錯面板下找到登陸的那個post請求 如上圖的紅色框中 檢視除錯面板的header 請求頭 查詢字串 表單資料 當然上面的請求頭 查詢字串 表單資料基本上可以在頁面上找到 獲取...
使用requests模擬登陸github
學了了下python requests 以及文字處理和正則工具re,順便應用一下。使用requests模擬登陸github 準備 tampler data 使用教程 利用它獲取到登陸所需要的header,post引數等資訊。requests 快速入門教程 模擬 import requests imp...
c curl模擬登陸
我們在使用一些 時,輸入使用者名稱,密碼即可登陸該 登陸原理就是將使用者輸入的使用者名稱和密碼組合成乙個特定字串,post給乙個url位址,如果使用者名稱密碼正確,就可以登陸了,如果想使用程式模擬這種登陸過程,需要下面的步驟 1 抓包工具,推薦使用httpwatch專業版,輸入使用者名稱,密碼就開始...