⑴ python 獲取登錄驗證嗎
#coding=utf-8
fromPILimportImage
importpytesseract
fromseleniumimportwebdriver
url='8080/WebGis/'
driver=webdriver.Chrome('chromedriver.exe')
driver.maximize_window()#將瀏覽器最大化,以獲取更清晰的校驗碼圖片
driver.get(url)
driver.save_screenshot('f://gps.png')#截取當前網頁,該網頁有我們需要的驗證碼
imgelement=driver.find_element_by_id('verifyCodeImg')#通過id定位驗證碼
location=imgelement.location#獲取驗證碼的x,y軸
size=imgelement.size#獲取驗證碼的長寬
rangle=(int(location['x']),
int(location['y']),
int(location['x']+size['width']),
int(location['y']+size['height']))#寫成我們需要截取的位置坐標
i=Image.open('f:gps.png')#打開截圖
verifycodeimage=i.crop(rangle)#使用Image的crop函數,從截圖中再次截取我們需要的區域
verifycodeimage.save('f://verifycodeimage.png')
image=Image.open('f:verifycodeimage.png')
#printimage
vcode=pytesseract.image_to_string(image).strip()#使用image_to_string識別驗證碼
printvcode
例子
⑵ python怎麼模擬登陸含有驗證碼的網站
爬取網站時經常會遇到需要登錄的問題,這是就需要用到模擬登錄的相關方法。Python提供了強大的url庫,想做到這個並不難。這里以登錄學校教務系統為例,做一個簡單的例子。
首先得明白cookie的作用,cookie是某些網站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據。因此我們需要用Cookielib模塊來保持網站的cookie。
這個是要登陸的地址 http://202.115.80.153/ 和驗證碼地址 http://202.115.80.153/CheckCode.aspx
可以發現這個驗證碼是動態更新的每次打開都不一樣,一般這種驗證碼和cookie是同步的。其次想識別驗證碼肯定是吃力不討好的事,因此我們的思路是首先訪問驗證碼頁面,保存驗證碼、獲取cookie用於登錄,然後再直接向登錄地址post數據。
⑶ python怎麼樣使用Windows身份驗證模式登錄sqlserver資料庫。只能是代碼實現。求python大佬解答。
做不到的,讓管理員設置一個普通用戶,許可權只能管理一個或幾個資料庫的增,刪,查就可以了。別折騰些沒有用的。
⑷ 如何通過Python實現簡單登錄驗證
使用Thrift的多語言編譯功能,將這個IDL文件編譯成C、java、python幾種語言對應的「特定語言介面文件」(每種語言只需要一條簡單的命令即可編譯完成),這樣拿到對應語言的「特定語言介面文件」之後,就可以開發客戶端和伺服器端的代碼了,開發過程中只要介面不變,客戶端和伺服器端的開發可以獨立的進行。
⑸ python中mysqldb的connect怎麼驗證是否連接成功
代碼如下:
# -*- coding: utf-8 -*-
#mysqldb
import time, MySQLdb
#連接
conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="test",charset="utf8")cursor = conn.cursor()
#寫入
sql = "insert into user(name,created) values(%s,%s)"param = ("aaa",int(time.time()))
n = cursor.execute(sql,param)
print n
#更新
sql = "update user set name=%s where id=3"param = ("bbb")
n = cursor.execute(sql,param)
print n
#查詢
n = cursor.execute("select * from user")
for row in cursor.fetchall():
for r in row:
print r
#刪除
sql = "delete from user where name=%s"
param =("aaa")
n = cursor.execute(sql,param)
print n
cursor.close()
#關閉
conn.close()
復制代碼
基本的使用如上,還是很簡單的,進一步使用還沒操作,先從網上找點資料放上來,以備後續查看1.引入MySQLdb庫
import MySQLdb
2.和資料庫建立連接
conn=MySQLdb.connect(host="localhost",user="root",passwd="sa",db="mytable",charset="utf8")提供的connect方法用來和資料庫建立連接,接收數個參數,返回連接對象.
比較常用的參數包括
host:資料庫主機名.默認是用本地主機.
user:資料庫登陸名.默認是當前用戶.
passwd:資料庫登陸的秘密.默認為空.
db:要使用的資料庫名.沒有默認值.
port:MySQL服務使用的TCP埠.默認是3306.
charset:資料庫編碼.
更多關於參數的信息可以查這里
http://mysql-python.sourceforge.net/MySQLdb.html然後,這個連接對象也提供了對事務操作的支持,標準的方法commit() 提交
rollback() 回滾
3.執行sql語句和接收返回值
cursor=conn.cursor()
n=cursor.execute(sql,param)
首先,我們用使用連接對象獲得一個cursor對象,接下來,我們會使用cursor提供的方法來進行工作.這些方法包括兩大類:1.執行命令,2.接收返回值cursor用來執行命令的方法:
callproc(self, procname, args):用來執行存儲過程,接收的參數為存儲過程名和參數列表,返回值為受影響的行數execute(self, query, args):執行單條sql語句,接收的參數為sql語句本身和使用的參數列表,返回值為受影響的行數executemany(self, query, args):執行單條sql語句,但是重復執行參數列表裡的參數,返回值為受影響的行數nextset(self):移動到下一個結果集
cursor用來接收返回值的方法:
fetchall(self):接收全部的返回結果行.
fetchmany(self, size=None):接收size條返回結果行.如果size的值大於返回的結果行的數量,則會返回cursor.arraysize條數據.
fetchone(self):返回一條結果行.
scroll(self, value, mode='relative'):移動指針到某一行.如果mode='relative',則表示從當前所在行移動value條,如果mode='absolute',則表示從結果集的第一行移動value條.
下面的代碼是一個完整的例子.
#使用sql語句,這里要接收的參數都用%s佔位符.要注意的是,無論你要插入的數據是什麼類型,佔位符永遠都要用%ssql="insert into cdinfo values(%s,%s,%s,%s,%s)"#param應該為tuple或者list
param=(title,singer,imgurl,url,alpha)
#執行,如果成功,n的值為1
n=cursor.execute(sql,param)
#再來執行一個查詢的操作
cursor.execute("select * from cdinfo")
#我們使用了fetchall這個方法.這樣,cds里保存的將會是查詢返回的全部結果.每條結果都是一個tuple類型的數據,這些tuple組成了一個tuplecds=cursor.fetchall()
#因為是tuple,所以可以這樣使用結果集
print cds[0][3]
#或者直接顯示出來,看看結果集的真實樣子
print cds
#如果需要批量的插入數據,就這樣做
sql="insert into cdinfo values(0,%s,%s,%s,%s,%s)"#每個值的集合為一個tuple,整個參數集組成一個tuple,或者listparam=((title,singer,imgurl,url,alpha),(title2,singer2,imgurl2,url2,alpha2))#使用executemany方法來批量的插入數據.這真是一個很酷的方法!
n=cursor.executemany(sql,param)
4.關閉資料庫連接
需要分別的關閉指針對象和連接對象.他們有名字相同的方法cursor.close()
conn.close()
四步完成,基本的資料庫操作就是這樣了.下面是兩個有用的連接MySQLdb用戶指南: http://mysql-python.sourceforge.net/MySQLdb.htmlMySQLdb文檔: http://mysql-python.sourceforge.net/MySQLdb-1.2.2/public/MySQLdb-mole.html5 編碼(防止亂碼)
需要注意的點:
1 Python文件設置編碼 utf-8 (文件前面加上 #encoding=utf-8)2 MySQL資料庫charset=utf-8
3 Python連接MySQL是加上參數 charset=utf8
4 設置Python的默認編碼為 utf-8 (sys.setdefaultencoding(utf-8)復制代碼 代碼如下:
#encoding=utf-8
import sys
import MySQLdb
reload(sys)
sys.setdefaultencoding('utf-8')
db=MySQLdb.connect(user='root',charset='utf8')註:MySQL的配置文件設置也必須配置成utf8
設置 MySQL 的 my.cnf 文件,在 [client]/[mysqld]部分都設置默認的字元集(通常在/etc/mysql/my.cnf):
[client]
default-character-set = utf8
[mysqld]
default-character-set = utf8
⑹ Python中os.system登錄postgres資料庫時為什麼不需要密碼
這是postgresql資料庫的trust認證設計,即任意os用戶無需密碼就可以獲得postgresql資料庫管理員許可權,不檢查os用戶名,用戶組。這被很多程序員認為是PG資料庫的一個安全漏洞。
可以通過配置pg_hba.conf和pg_ident.conf文件禁止os用戶以trust認證方式登錄。
⑺ 使用python做登陸程序,在資料庫中查找用戶名和密碼是否正確,用SQLite
import MySQLdb
conn=MySQLdb.connect(user='root',passwd='pwd',host='127.0.0.1',db='python_test')
cur=conn.cursor()
cur.execute("select * from users where uid='101' and login='ong'")
##uid 是你的密碼 ;login是你的用戶名
num=0
for data in cur.fetchall():
num=num+1
print data
if(num != 0):
print '登陸成功'
else:
print '用戶名或密碼未找到'
cur.close()
conn.commit()
conn.close()
如果還有其他問題可以再問
⑻ python實現網頁登陸驗證(自動登錄),試了很多百度上的代碼(雖然才幾行),就是登錄不成功,問題在哪
因為這個頁面的登錄表單是用javascript生成的,
除了userName(注意不是你寫的username), password等欄位外,
你還必須提供很多隱藏欄位的信息(包括codeString, safeFlag, u, isPhone等等)
圖片是登錄表單的源代碼,這里的hidden數據你都要在values里給定,才能正確模擬登錄行為
⑼ 使用python做登陸程序,在資料庫中查找用戶名和密碼是否正確
import MySQLdb
conn=MySQLdb.connect(user='root',passwd='pwd',host='127.0.0.1',db='python_test')
cur=conn.cursor()
cur.execute("select * from users where uid='101' and login='ong'")
##uid 是你的密碼 ;login是你的用戶名
num=0
for data in cur.fetchall():
num=num+1
print data
if(num != 0):
print '登陸成功'
else:
print '用戶名或密碼未找到'
cur.close()
conn.commit()
conn.close()
如果還有其他問題可以再問