masalah log masuk dan log masuk laman web python
天蓬老师
天蓬老师 2017-05-18 10:59:42
0
3
732

Masalah: Selepas python berjaya log masuk, ia menggesa anda tidak log masuk apabila anda log masuk, yang bermaksud kuki tiada

Saya dapati melalui penangkapan paket Fidder bahawa berbanding dengan log masuk manual yang berjaya, pakej yang dihantar oleh Python tidak mempunyai kuki, tetapi saya mendapati bahawa menggunakan kaedah pembuka, Python akan menyimpan kuki untuk akses seterusnya

.
import urllib
from http import cookiejar
import gzip

def getOpener(head):
    cookie = cookiejar.CookieJar()
    pre = urllib.request.HTTPCookieProcessor(cookie)
    opener = urllib.request.build_opener(pre)
    header = []
    for key, value in head.items():
        elem = (key, value)
        header.append(elem)
    opener.addheaders = header
    return opener, cookie

#伪装浏览器的头部
header = {
    'Connection': 'keep-alive',
    'Accept-Language': 'zh-CN,zh;q=0.8',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
    'Accept-Encoding': 'gzip, deflate, br',
    'Host':'account.oneplus.cn',
    'X-Requested-With':'XMLHttpRequest',
    'Origin': 'http://account.oneplus.cn',

}
url = 'http://account.oneplus.cn/onepluslogin'
opener, cookie = getOpener(header)

def ungzip(data):
    try:        # 尝试解压
        print('正在解压.....')
        data = gzip.decompress(data)
        print('解压完毕!')
    except:
        print('未经压缩, 无需解压')
    return data
#
# 
email = r'***********'
password = '****'
postDict = {
    'loginName': email,
    'passWord': password,
    'source': '2',
    'remember': '0',
    'channel': '2',
    'verifyCode': ''
 }

postData = urllib.parse.urlencode(postDict).encode()
op = opener.open(url, postData)
data = op.read()
data = ungzip(data)
print(data)

#--------签到--------------

register_url = 'http://www.oneplusbbs.com/plugin.php?id=dsu_paulsign:sign&operation=qiandao&infloat=1&inajax=1'
re_op = opener.open(register_url)
data = op.read()
data = ungzip(data)
print(data)
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

membalas semua(3)
PHPzhong

Sebab hilang cookies ni

Selepas menghantar permintaan log masuk ke http://account.oneplus.cn/one...
Data yang dikembalikan adalah seperti ini
{u'defaultData': Tiada, u'errCode': u'11025', u'ret ' : u'1', u'data': {u'jumpUrl': Tiada, u'isCartMerge': u'false', u'bbscookie': u'http://www.oneplusbbs.com/set.. . ', u'times': u'0'}, u'page': Tiada, u'errMsg': Tiada}
Hos tidak menghantar semula permintaan setsocookie, bbscookie

Sebab mengapa log masuk gagal ialah log masuk adalah permintaan pos, dan pengarang menggunakan get

Berikut adalah kod saya selepas latihan, untuk rujukan sahaja

import re
import requests

header = {    'Connection': 'keep-alive',    'Accept-Language': 'zh-CN,zh;q=0.8',    'Accept': 'application/json, text/javascript, */*; q=0.01',    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',    'Accept-Encoding': 'gzip, deflate, br',    'Host':'account.oneplus.cn',    'X-Requested-With':'XMLHttpRequest',    'Origin': 'http://account.oneplus.cn',}
url = 'http://account.oneplus.cn/onepluslogin'
email = '邮箱'
password = '密码'

postDict = {    'loginName': email,    'passWord': password,    'source': '2',    'remember': '0',    'channel': '2',    'verifyCode': '' }

session = requests.Session()

r = session.post(url, data=postDict)
data = r.json()
print(data)
r = session.get(data['data']['bbscookie'])

sign_url = 'http://www.oneplusbbs.com/plugin.php?id=dsu_paulsign:sign'

r = session.get(sign_url)
m = re.search('name="formhash" value="([^"]+)"', r.text)

formhash = m.group(1)

print(formhash)

qiandao_url = 'http://www.oneplusbbs.com/plugin.php?id=dsu_paulsign:sign&operation=qiandao&infloat=1&inajax=1'

form = {'formhash': formhash,
        'qdxq':'fd',
        'qdmode':1,
        'todaysay':'helloworld'
        }

r = session.post(qiandao_url, data=form)

print(r.text)
洪涛

Anda boleh mencuba menggunakan modul permintaan API ini sangat mudah.
permintaan

阿神

account.oneplus.cn dan www.oneplus.cn hendaklah merentas domain

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!