在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Python  C  Linux/ 模擬登陸網(wǎng)站,發(fā)現(xiàn)post表單時(shí)密碼和賬號(hào)都被加密,加密的js可以找到,但是加密

模擬登陸網(wǎng)站,發(fā)現(xiàn)post表單時(shí)密碼和賬號(hào)都被加密,加密的js可以找到,但是加密的參數(shù)還有一個(gè)是服務(wù)器隨機(jī)返回的,怎么辦?

一、
模擬登陸一個(gè)網(wǎng)站,發(fā)現(xiàn)post表單時(shí)密碼和賬號(hào)都被加密,加密后的數(shù)據(jù)傳遞給一個(gè)type屬性為hidden的input,我想獲取這個(gè)input,但是點(diǎn)擊登錄按鈕后這個(gè)input就刷新了
這是js代碼
這是登錄的js代碼,可以看出加密后的參數(shù)傳為encoded
圖片描述
我嘗試將input的type屬性hidden改為txt,再獲取它的value,但是也沒(méi)成功
二、
登錄的驗(yàn)證碼怎么獲取
圖片描述
驗(yàn)證碼沒(méi)有直接用URL給出,而是src=‘’,獲取驗(yàn)證碼的URL會(huì)加一個(gè)random的參數(shù)
post表單

上面是post的表單

最后網(wǎng)站鏈接為鏈接描述

回答
編輯回答
鹿惑

人家防的就是你

2018年4月2日 14:59
編輯回答
落殤

我看到的encoded是通過(guò)請(qǐng)求這個(gè)接口/Logon.do?method=logon&flag=sess得到一字串,然后前半部分是需要混合的字串,后半部分是混合的長(zhǎng)度,然后與用戶(hù)名和密碼拼接起來(lái)字串進(jìn)行交叉混合得到最終的encoded
驗(yàn)證碼你需要識(shí)別圖片

2018年1月9日 10:29
編輯回答
背叛者

編碼函數(shù)相當(dāng)簡(jiǎn)單,可以直接轉(zhuǎn)換成 python 代碼,如下

# !/usr/bin/python2
# -*- coding: utf-8 -*-
import requests


def get_login_data():
    # 請(qǐng)?zhí)鎿Q成合適的域名
    url = 'http://xxx.xxx.xxx/Logon.do?method=logon&flag=sess'
    rsp = requests.get(url)
    rsp.raise_for_status()
    return rsp.text.encode()


def encode(usr, pwd, data):
    scode, sxh = data.split('#')
    raw = usr + '%%%' + pwd
    enc = ''
    for i in range(len(raw)):
        if i < 20:
            enc += raw[i] + scode[0:int(sxh[i])]
            scode = scode[int(sxh[i]):]
        else:
            enc += raw[i:]
            break
    return enc


def login():
    # encoded = encode(xx, xx, get_login_data())
    # requests.post(...)
    # ...

若遇到非常復(fù)雜的編碼(加密)函數(shù),可提取 javascript 代碼,直接用 js 引擎(如 nodejs)執(zhí)行它得到結(jié)果。

2017年6月13日 07:44