2014-10-29 1 views
2

서버 인증서 목록을 가져오고 이것을 수행하기 위해 파이썬 표준 SSL 라이브러리를 사용하려고합니다. 이것은 내가 그 일을하고 어떻게 : 그것은 시간이 초과되기까지의 시간 (매우 긴) 기본 SSL 시간 초과 값을 기다립니다 out.However 파이썬을 통해 서버 인증서를 가져 오는 동안 시간 초과 추가

import ssl 
from socket import * 

urls = [i.strip().lower() for i in open("urls.txt")] 
for urls in url: 
    try: 
     print ssl.get_server_certificate((url, 443)) 
    except error: 
     print "No connection" 

그러나 일부 URL에 대한 연결 문제와 연결이 단지 시간이 있습니다. ssl.get_server_certificate 메소드에서 시간 초과를 어떻게 지정합니까? 내가 전에 소켓에 ​​대한 시간 제한을 지정한하지만 난에서이 방법에 대한

답변

1

그것을 수행하는 방법에 관한 단서입니다 docs :

SSL sockets provide the following methods of Socket Objects: 

gettimeout(), settimeout(), setblocking() 

그래서 그냥 간단해야 같은 :

import ssl 
from socket import * 

settimeout(10) 

urls = [i.strip().lower() for i in open("urls.txt")] 
for urls in url: 
    try: 
     print ssl.get_server_certificate((url, 443)) 
    except (error, timeout) as err: 
     print "No connection: {0}".format(err) 
+0

있어 다음 오류가 발생했습니다 : – Amistad

+0

다음 오류가 발생했습니다 : AttributeError : 'module'객체에 'settimeout'속성이 없습니다.이 도구는 Python 2.7.9에서 도입되었으며 내 버전은 2.7.3입니다. 문제 일 수 있습니다. ? – Amistad

+0

대신'ssl.settimeout'을 사용하면 소켓 타임 아웃을'settimeout (10)'으로 바꾸면됩니다 (이미 소켓에서 가져와야 함). – CasualDemon