導航:首頁 > 編程語言 > ssopython

ssopython

發布時間:2022-08-15 04:11:33

A. 如何設置python模塊的默認搜索路徑

Python 的模塊搜索路徑 PYTHONPATH 類似 Java 的 CLASSPATH
由以下路徑組合而成,通過更改以下 4 者其中之一都可以改變 Python 模塊的默認搜索路徑:
1. 當前工作目錄
2. 操作系統的 PYTHONPATH 環境變數
3. Python 安裝目錄 lib/site-packages 中或 PYTHONPATH 中的 .pth 文件定義的路徑
如:find ~/my_lib -type d -print > ~/python2.6/site-packages/my_lib.pth
4. 運行時對 sys.path 的改變,如:

向後增加:
sys.path.append(path)
path 不要以 / 或 \ 結尾。
向前增加:
sys.path.insert(0, path)

B. 打開項目提示這個,如何解決 http/1.1 500 server error

出現500錯誤的原因是很多的,一般來說,如果程序出錯,那麼在瀏覽器內會返回給用戶一個友好的錯誤提示,統一稱之為伺服器500錯誤。
解決的方法就是您必須在http中能夠正確的獲得錯誤信息,方法為:請打開瀏覽器,選擇工具,internet選項,高級,在高級中的瀏覽項目裡面有一個「顯示http友好錯誤提示」的復選框,請取消該復選框,這樣您可以獲得正確的錯誤提示。
在獲得正確的錯誤提示之後,您就可以根據該錯誤提示檢查您具體的出錯原因了。

C. python報錯urllib.error.URLError: <urlopen error unknown url type: src="https>,Windows系統怎麼解決

jango站點使用django_cas接入SSO(單點登錄系統),配置完成後登錄,拋出「urlopen error unknown url type: https」異常。尋根朔源發現是python內置的urllib模塊不支持https協議。

>>> import urllib
>>> urllib.urlopen('htom')
<addinfourl at 269231456 whose fp = <socket._fileobject object at 0xff98250>>
>>> urllib.urlopen('hm')
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
File "/usr/local/python27/lib/python2.7/urllib.py", line 86, in urlopen
return opener.open(url)
File "/usr/local/python27/lib/python2.7/urllib.py", line 204, in open
return self.open_unknown(fullurl, data)
File "/usr/local/python27/lib/python2.7/urllib.py", line 216, in open_unknown
raise IOError, ('url error', 'unknown url type', type)
IOError: [Errno url error] unknown url type: 'https'

之所以python內置的urllib模塊不支持https協議是因為編譯安裝python之前沒有編譯安裝類似於openssl這樣的SSL庫,以至於python不支持SSL

因為我用的是Centos系統所以安裝openssl-devel
sudo yum install openssl-devel

之後重新編譯Python
./configure(可選,因為之前已經配置過,按之前的配置來就行了,而且最好按之前的配置配編譯安裝以免依賴的庫需要重新編譯安裝。)
make
make install

>>> import urllib
>>> urllib.urlopen('htt.com')
沒有再報同樣的錯誤。

在安裝完openssl-devel後重新編譯python前也有說需要編輯Moles文件夾內Setup.dist文件的
修改
# Socket mole helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
#SSL=/usr/local/ssl
#_ssl _ssl.c \
# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
# -L$(SSL)/lib -lssl -lcrypto

# Socket mole helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/usr/local/ssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto

但實際測試下來好像並不需要修改這個文件,編譯的時候能自動將SSL庫編譯進python中。

另外需要特別注意的是,重新編譯安裝python後,通過可執行文件名(可能是個連接文件)運行python可能運行的還是老的python,這是因為可執行文件名沒有連接到新的python可執行程序。因此要用最新的python可執行文件名或指向該名字的連接來運行python。

重新編譯安裝python後有可能導致需要重新編譯django,MySQLdb,pycrypto,python-ldap,django-auth-ldap,django_cas,django_cas,pymongo等一些列依賴python的模塊。這里要特別注意

D. django做blog,到建立blog公共部分的時候就遇到這個問題,不知道如何解決了

ImportErrorat/blog/
Nomolenamedblog.urls

錯誤就是這里,把你代碼以及結構截圖過來吧。

E. 我在使用python下的flask框架 但是我要怎麼實現sso登錄

單點登錄跟登錄其實差不多,理解了登錄也可以搞出單點登錄
回顧
在前面的系列章節中,我們創建了一個資料庫並且學著用用戶和郵件來填充,但是到現在我們還沒能夠植入到我們的程序中。 兩章之前,我們已經看到怎麼去創建網路表單並且留下了一個實現完全的登陸表單。
在這篇文章中,我們將基於我門所學的網路表單和資料庫來構建並實現我們自己的用戶登錄系統。教程的最後我們小程序會實現新用戶注冊,登陸和退出的功能。
為了能跟上這章節,你需要前一章節最後部分,我們留下的微博程序。請確保你的程序已經正確安裝和運行。

在前面的章節,我們開始配置我們將要用到的Flask擴展。為了登錄系統,我們將使用兩個擴展,Flask-Login 和 Flask-OpenID. 配置如下所示 (fileapp\__init__.py):

import os
from flaskext.login import LoginManager
from flaskext.openid import OpenID
from config import basedir

lm = LoginManager()
lm.setup_app(app)
oid = OpenID(app, os.path.join(basedir, 'tmp'))

Flask-OpenID 擴展為了可以存儲臨時文件,需要一個臨時文件夾路徑。為此,我們提供了它的位置。

重訪我們的用戶模型
Flask-Login擴展需要在我們的User類里實現一些方法。除了這些方法以外,類沒有被要求實現其它方法。
下面是我們的User類 (fileapp/models.py):

class User(db.Model):
id = db.Column(db.Integer, primary_key = True)
nickname = db.Column(db.String(64), unique = True)
email = db.Column(db.String(120), unique = True)
role = db.Column(db.SmallInteger, default = ROLE_USER)
posts = db.relationship('Post', backref = 'author', lazy = 'dynamic')

def is_authenticated(self):
return True

def is_active(self):
return True

def is_anonymous(self):
return False

def get_id(self):
return unicode(self.id)

def __repr__(self):
return '<User %r>' % (self.name)

is_authenticated方法是一個誤導性的名字的方法,通常這個方法應該返回True,除非對象代表一個由於某種原因沒有被認證的用戶。
is_active方法應該為用戶返回True除非用戶不是激活的,例如,他們已經被禁了。
is_anonymous方法應該為那些不被獲准登錄的用戶返回True。
最後,get_id方法為用戶返回唯一的unicode標識符。我們用資料庫層生成唯一的id。

用戶載入回調
現在我們通過使用Flask-Login和Flask-OpenID擴展來實現登錄系統
首先,我們需要寫一個方法從資料庫載入到一個用戶。這個方法會被Flask-Login使用(fileapp/views.py):

@lm.user_loader
def load_user(id):
return User.query.get(int(id))

記住Flask-Login里的user id一直是unicode類型的,所以在我們把id傳遞給Flask-SQLAlchemy時,有必要把它轉化成integer類型。
登錄視圖函數
接下來我們要更新登錄視圖函數(fileapp/views.py):

from flask import render_template, flash, redirect, session, url_for, request, g
from flaskext.login import login_user, logout_user, current_user, login_required
from app import app, db, lm, oid
from forms import LoginForm
from models import User, ROLE_USER, ROLE_ADMIN

@app.route('/login', methods = ['GET', 'POST'])
@oid.loginhandler
def login():
if g.user is not None and g.user.is_authenticated():
return redirect(url_for('index'))
form = LoginForm()
if form.validate_on_submit():
session['remember_me'] = form.remember_me.data
return oid.try_login(form.openid.data, ask_for = ['nickname', 'email'])
return render_template('login.html',
title = 'Sign In',
form = form,
providers = app.config['OPENID_PROVIDERS'])

注意到我們導入了一些新的模塊,其中有些後面會用到。
跟上個版本的變化很小。我們給視圖函數添加了一個新的裝飾器:oid.loginhandler。它告訴Flask-OpenID這是我們的登錄視圖函數。

在方法體的開頭,我們檢測是是否用戶是已經經過登錄認證的,如果是就重定向到index頁面。這兒的思路是如果一個用戶已經登錄了,那麼我們不會讓它做二次登錄。
全局變數g是Flask設置的,在一個request生命周期中,用來存儲和共享數據的變數。所以我猜你已經想到了,我們將把已經登錄的用戶放到g變數里。
我們在調用redirect()時使用的url_for()方法是Flask定義的從給定的view方法獲取url。如果你想重定向到index頁面,你h很可能使用redirect('/index'),但是我們有很好的理由讓Flask為你構造url。

當我們從登錄表單得到返回數據,接下來要運行的代碼也是新寫的。這兒我們做兩件事。首先我們保存remember_me的布爾值到Flask的session中,別和Flask-SQLAlchemy的db.session混淆了。我們已經知道在一個request的生命周期中用Flask的g對象來保存和共享數據。沿著這條線路Flask的session提供了更多,更復雜的服務。一旦數據被保存到session中,它將在同一客戶端發起的這次請求和這次以後的請求中永存而不會消亡。數據將保持在session中直到被明確的移除。為了做到這些,Flask為每個客戶端建立各自的session。

下面的oid.try_login是通過Flask-OpenID來執行用戶認證。這個方法有兩個參數,web表單提供的openid和OpenID provider提供的我們想要的list數據項。由於我們定義了包含nickname和email的User類,所以我們要從找nickname和email這些項。
基於OpenID的認證是非同步的。如果認證成功,Flask-OpenID將調用有由oid.after_login裝飾器注冊的方法。如果認證失敗那麼用戶會被重定向到login頁面。
Flask-OpenID登錄回調
這是我們實現的after_login方法(app/views.py)

@oid.after_login
def after_login(resp):
if resp.email is None or resp.email == "":
flash('Invalid login. Please try again.')
redirect(url_for('login'))
user = User.query.filter_by(email = resp.email).first()
if user is None:
nickname = resp.nickname
if nickname is None or nickname == "":
nickname = resp.email.split('@')[0]
user = User(nickname = nickname, email = resp.email, role = ROLE_USER)
db.session.add(user)
db.session.commit()
remember_me = False
if 'remember_me' in session:
remember_me = session['remember_me']
session.pop('remember_me', None)
login_user(user, remember = remember_me)
return redirect(request.args.get('next') or url_for('index'))

傳給after_login方法的resp參數包含了OpenID provider返回的一些信息。
第一個if聲明僅僅是為了驗證。我們要求一個有效的email,所以一個沒有沒提供的email我們是沒法讓他登錄的。

接下來,我們將根據email查找資料庫。如果email沒有被找到我們就認為這是一個新的用戶,所以我們將在資料庫中增加一個新用戶,做法就像我們從之前章節學到的一樣。注意我們沒有處理nickname,因為一些OpenID provider並沒有包含這個信息。
做完這些我們將從Flask session中獲取remember_me的值,如果它存在,那它是我們之前在login view方法中保存到session中的boolean類型的值。
然後我們調用Flask-Login的login_user方法,來注冊這個有效的登錄。

最後,在最後一行我們重定向到下一個頁面,或者如果在request請求中沒有提供下個頁面時,我們將重定向到index頁面。
跳轉到下一頁的這個概念很簡單。比方說我們需要你登錄才能導航到一個頁面,但你現在並未登錄。在Flask-Login中你可以通過login_required裝飾器來限定未登錄用戶。如果一個用戶想連接到一個限定的url,那麼他將被自動的重定向到login頁面。Flask-Login將保存最初的url作為下一個頁面,一旦登錄完成我們便跳轉到這個頁面。
做這個工作Flask-Login需要知道用戶當前在那個頁面。我們可以在app的初始化組件里配置它(app/__init__.py):

lm = LoginManager()
lm.setup_app(app)
lm.login_view = 'login'

全局變數g.user
如果你注意力很集中,那麼你應該記得在login view方法中我們通過檢查g.user來判斷一個用戶是否登錄了。為了實現這個我們將使用Flask提供的before_request事件。任何一個被before_request裝飾器裝飾的方法將會在每次request請求被收到時提前與view方法執行。所以在這兒來設置我們的g.user變數(app/views.py):

@app.before_request
def before_request():
g.user = current_user

這就是它要做的一切,current_user全局變數是被Flask-Login設定的,所以我們只需要把它拷貝到更容易被訪問的g變數就OK了。這樣,所有的請求都能訪問這個登錄的用戶,甚至於內部的模板。
index視圖
在之前的章節中我們用假代碼遺留了我們的index視圖,因為那個時候我們系統里並沒有用戶和博客文章。現在我們有用戶了,所以,讓我們來完成它吧:

@app.route('/')
@app.route('/index')
@login_required
def index():
user = g.user
posts = [
{
'author': { 'nickname': 'John' },
'body': 'Beautiful day in Portland!'
},
{
'author': { 'nickname': 'Susan' },
'body': 'The Avengers movie was so cool!'
}
]
return render_template('index.html',
title = 'Home',
user = user,
posts = posts)

在這個方法中只有兩處變動。首先,我們增加了login_required裝飾器。這樣表明了這個頁面只有登錄用戶才能訪問。
另一個改動是把g.user傳給了模板,替換了之間的假對象。

現在可以運行我們的應用了。
當我們連接到你將會看到登陸頁面。記著如果你通過OpenID登錄那麼你必須使用你的提供者提供的OpenID URL。你可以下面URL中的任何一個OpenID provider來為你產生一個正確的URL。
作為登錄進程的一部分,你將會被重定向到OpenID提供商的網站,你將在那兒認證和授權你共享給我們應用的一些信息(我們只需要email和nickname,放心,不會有任何密碼或者其他個人信息被曝光)。
一旦登錄完成你將作為已登錄用戶被帶到index頁面。
試試勾選remember_me復選框。有了這個選項當你在瀏覽器關閉應用後重新打開時,你還是已登錄狀態。
注銷登錄
我們已經實現了登錄,現在是時候來實現注銷登錄了。
注銷登錄的方法灰常簡單(file app/views.py):

@app.route('/logout')
def logout():
logout_user()
return redirect(url_for('index'))

但我們在模板中還沒有注銷登錄的鏈接。我們將在base.html中的頂部導航欄添加這個鏈接(file app/templates/base.html):

<html>
<head>
{% if title %}
<title>{{title}} - microblog</title>
{% else %}
<title>microblog</title>
{% endif %}
</head>
<body>
<div>Microblog:
<a href="{{ url_for('index') }}">Home</a>
{% if g.user.is_authenticated() %}
| <a href="{{ url_for('logout') }}">Logout</a>
{% endif %}
</div>
<hr>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
{% for message in messages %}
<li>{{ message }} </li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
{% block content %}{% endblock %}
</body>
</html>

這是多麼多麼簡單啊,我們只需要檢查一下g.user中是否有一個有效的用戶,如果有我們就添加註銷鏈接。在我們的模板中我們再一次使用了url_for方法。
最後的話
我們現在有了一個全功能的用戶登錄系統。在下一章中,我們將創建用戶的個人資料頁,並顯示用戶的頭像。

F. 如何用Python寫一個http post請求

"""我只是意思意思一下寫了點代碼 不完整 但是大概意思應該體現出來了 一些參數是模擬sina weibo登陸的 我有空就去貼出全部代碼 以前也寫過個分享了 然後sina改了加密演算法 我就又寫了一個」「」
session = requests.Session()
url_prelogin = "xxxxx"

resp = session.get(url_prelogin)
json_data = re.search('\((.*)\)', resp.content).group(1)
data = json.loads(json_data)
servertime = data['servertime']
nonce = data['nonce']
pubkey = data['pubkey']
rsakv = data['rsakv']

postdata = {
'entry': 'weibo',
'gateway': '1',
'from': '',
'savestate': '7',
'userticket': '1',
'ssosimplelogin': '1',
'vsnf': '1',
'vsnval': '',
'su': su,
'service': 'miniblog',
'servertime': servertime,
'nonce': nonce,
'pwencode': 'rsa2',
'sp': sp,
'encoding': 'UTF-8',
'url': ' 提交地址',
'returntype': 'META',
'rsakv' : rsakv,
}

resp = session.post(url_login,data=postdata)
print resp.content

G. 怎麼用 python 模擬 js 里 JSEncrypt 模塊的加密方式

PC登錄新浪微博時,在客戶端用js預先對用戶名、密碼都進行了加密,而且在POST之前會GET一組參數,這也將作為POST_DATA的一部分。這樣,就不能用通常的那種簡單方法來模擬POST登錄(比如人人網)。
通過爬蟲獲取新浪微博數據,模擬登錄是必不可少的。
1、在提交POST請求之前,需要GET獲取四個參數(servertime,nonce,pubkey和rsakv),不是之前提到的只是獲取簡單的servertime,nonce,這里主要是由於js對用戶名、密碼加密方式改變了。
1.1 由於加密方式的改變,我們這里將使用到RSA模塊,有關RSA公鑰加密演算法的介紹可以參考網路中的有關內容。下載並安裝rsa模塊:
下載:https//pypi.python.org/pypi/rsa/3.1.1
rsa模塊文檔地址:http//stuvel.eu/files/python-rsa-doc/index.html
根據自己的Python版本選擇適合自己的rsa安裝包(.egg),在win下安裝需要通過命令行使用easy_install.exe(win上安裝setuptool從這里下載:setuptools-0.6c11.win32-py2.6.exe 安裝文件 )進行安裝,例如:easy_install rsa-3.1.1-py2.6.egg,最終命令行下測試import rsa,未報錯則安裝成功。
1.2 獲得以及查看新浪微博登錄js文件
查看新浪通行證url (http//login.sina.com.cn/signup/signin.php)的源代碼,其中可以找到該js的地址 http//login.sina.com.cn/js/sso/ssologin.js,不過打開後裡面的內容是加密過的,可以在網上找個在線解密站點解密,查看最終用戶名和密碼的加密方式。
1.3 登錄
登錄第一步,添加自己的用戶名(username),請求prelogin_url鏈接地址:
prelogin_url = 'http//login.sina.com.cn/sso/prelogin.php?entry=sso&callback=sinaSSOController.preloginCallBack&su=%s&rsakt=mod&client=ssologin.js(v1.4.4)' % username
使用get方法得到以下類似內容:
sinaSSOController.preloginCallBack({"retcode":0,"servertime":1362041092,"pcid":"gz-","nonce":"IRYP4N","pubkey":"","rsakv":"1330428213","exectime":1})
進而從中提取到我們想要的servertime,nonce,pubkey和rsakv。當然,pubkey和rsakv的值我們可以寫死在代碼中,它們是固定值。
2、之前username 經過BASE64計算:
復制代碼 代碼如下:
username_ = urllib.quote(username)
username = base64.encodestring(username)[:-1]
password經過三次SHA1加密,且其中加入了 servertime 和 nonce 的值來干擾。即:兩次SHA1加密後,結果加上servertime和nonce的值,再SHA1算一次。
在最新的rsa加密方法中,username還是以前一樣的處理;
password加密方式和原來有所不同:
2.1 先創建一個rsa公鑰,公鑰的兩個參數新浪微博都給了固定值,不過給的都是16進制的字元串,第一個是登錄第一步中的pubkey,第二個是js加密文件中的『10001'。
這兩個值需要先從16進制轉換成10進制,不過也可以寫死在代碼里。這里就把10001直接寫死為65537。代碼如下:
復制代碼 代碼如下:
rsaPublickey = int(pubkey, 16)
key = rsa.PublicKey(rsaPublickey, 65537) #創建公鑰
message = str(servertime) + '\t' + str(nonce) + '\n' + str(password) #拼接明文js加密文件中得到
passwd = rsa.encrypt(message, key) #加密
passwd = binascii.b2a_hex(passwd) #將加密信息轉換為16進制。
2.2 請求通行證url:login_url =『http//login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.4)'
需要發送的報頭信息
復制代碼 代碼如下:
postPara = {
'entry': 'weibo',
'gateway': '1',
'from': '',
'savestate': '7',
'userticket': '1',
'ssosimplelogin': '1',
'vsnf': '1',
'vsnval': '',
'su': encodedUserName,
'service': 'miniblog',
'servertime': serverTime,
'nonce': nonce,
'pwencode': 'rsa2',
'sp': encodedPassWord,
'encoding': 'UTF-8',
'prelt': '115',
'rsakv' : rsakv,
'url': 'http//weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack',
'returntype': 'META'
}
請求的內容中添加了rsakv,將pwencode的值修改為rsa2,其他跟以前一致。
將參數組織好,POST請求。檢驗是否登錄成功,可以參考POST後得到的內容中的一句 location.replace("http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&retcode=101&reason=%B5%C7%C2%BC%C3%FB%BB%F2%C3%DC%C2%EB%B4%ED%CE%F3");
如果retcode=101則表示登錄失敗。登錄成功後結果與之類似,不過retcode的值是0。
3、登錄成功後,在body中的replace信息中的url就是我們下一步要使用的url。然後對上面的url使用GET方法來向伺服器發請求,保存這次請求的Cookie信息,就是我們需要的登錄Cookie了。

H. python怎麼知道一個字元串的編碼方式

字元串的編碼,有很多種如utf-8,gb2312,gbk,gb18030,bz2,zlib,big5,bzse64

python 對編碼的處理有兩個方法,decode()和 encode()方法

a='你好'
b='python'
printa.decode('utf-8').encode('gbk')##decode方法把字元串轉換為unicode對象,然後通過encode方法轉換為指定的編碼字元串對象
printb.decode('utf-8')##decode方法把字元串轉換為unicode對象

所以要讓python(或者說機器)來識別字元串的編碼,是一件很困難的事。編碼就是漢字和整數之間的對應,同一個整數,可以在不同的編碼中,都有對應的漢字。比如下面的例子,比特流'xe6xb0xb4xe5xa3xb6'在四種編碼中都有對應的漢字,但只有在utf-8編碼下,它對應的漢字才有意義。我們可以一眼看出這點,可是要讓計算機做到這點,就很難了。

>>>s='水壺'
>>>s
18:'xe6xb0xb4xe5xa3xb6'
>>>printunicode(s,'big5')
瘞游ㄥ
>>>printunicode(s,'gbk')
姘村6
>>>printunicode(s,'gb2312')
姘村6
>>>printunicode(s,'utf-8')
水壺

I. 如何用Python寫一個http post請求

"""我只是意思意思一下寫了點代碼 不完整 但是大概意思應該體現出來了 一些參數是模擬sina weibo登陸的 我有空就去貼出全部代碼 以前也寫過個分享了 然後sina改了加密演算法 我就又寫了一個」「」
session = requests.Session()
url_prelogin = "xxxxx"

resp = session.get(url_prelogin)
json_data = re.search('\((.*)\)', resp.content).group(1)
data = json.loads(json_data)
servertime = data['servertime']
nonce = data['nonce']
pubkey = data['pubkey']
rsakv = data['rsakv']

postdata = {
'entry': 'weibo',
'gateway': '1',
'from': '',
'savestate': '7',
'userticket': '1',
'ssosimplelogin': '1',
'vsnf': '1',
'vsnval': '',
'su': su,
'service': 'miniblog',
'servertime': servertime,
'nonce': nonce,
'pwencode': 'rsa2',
'sp': sp,
'encoding': 'UTF-8',
'url': ' xxxxx',
'returntype': 'META',
'rsakv' : rsakv,
}

resp = session.post(url_login,data=postdata)
print resp.content

J. python如何解析包含不同編碼的字元串

安裝chardet模塊
chardet文件夾放在/usr/lib/python2.4/site-packages目錄下

[root@sha-sso-data01 chardet]# python
Python 2.4.3 (#1, Sep 21 2011, 19:55:41)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-51)] on linux2
Type "help", "right", "credits" or "license" for more information.
>>> import chardet
>>> chardet.detect("我")
{'confidence': 0.505, 'encoding': 'utf-8'}
>>>

閱讀全文

與ssopython相關的資料

熱點內容
做賬為什麼要用加密狗 瀏覽:583
考研群體怎麼解壓 瀏覽:156
linux修改命令提示符 瀏覽:224
圓圈裡面k圖標是什麼app 瀏覽:59
pdf加空白頁 瀏覽:945
linux伺服器如何看網卡狀態 瀏覽:316
解壓新奇特視頻 瀏覽:704
圖書信息管理系統java 瀏覽:552
各種直線命令詳解 瀏覽:862
程序員淚奔 瀏覽:146
素材怎麼上傳到伺服器 瀏覽:515
android百度離線地圖開發 瀏覽:189
web可視化編程軟體 瀏覽:293
java筆試編程題 瀏覽:746
win11什麼時候可以裝安卓 瀏覽:564
java不寫this 瀏覽:1001
雲點播電影網php源碼 瀏覽:97
pythonclass使用方法 瀏覽:226
移動加密軟體去哪下載 瀏覽:294
php彈出alert 瀏覽:209