def search_by_isbn(cls, isbn): #将isbn号作为参数传入 url = cls.isbn_url.format( isbn ) #格式化得到完整url,除了用YuShuBook.isbn_url之外还可以用链式查找。self.isbn_url进行查找读取。 result = HTTP.get(url) #用http去接受 #由于ISBN是json格式。所以result会直接返回一个字典。 return result
def search_by_isbn(cls,isbn): url = cls.isbn_url.format(isbn) result = HTTP.get(url) # url = self.isbn_url return result
def search_by_keyword(cls,keyword,count=15,start=0): url = cls.keyword_url.format(keyword,count,start) result = HTTP.get(url) return result
# _*_ coding: utf-8 _*_ __author__ = '54h50m' __date__ = '2018/7/12 23:16' from http import HTTP class YuShuBook: isbn_url = 'http://t.yushu.im/v2/book/isbn/{}' keyword_url = 'http://t.yushu.im/v2/book/search?q={}&count={}&start={}' def search_by_isbn(self,isbn): url = YuShuBook.isbn_url.format(isbn) result = HTTP.get(url) # dict return result def search_by_keyword(self,url): pass
def search_by_keyword(cls, keyword): url = cls.KEYWORD_URL.format(keyword) result = HTTP.get(url) return result
def search_by_isbn(cls, isbn): url = cls.ISBN_URL.format(isbn) result = HTTP.get(url) return result
def search_by_isbn(cls, isbn): url = YuShuBook.isbn_url.format(isbn) result = HTTP.get(cls, url) return cls(result)
def search_by_keyword(cls, keyword): url = YuShuBook.keyword_url.format(keyword) result = HTTP.get(cls, url) return cls(result)
def search_by_sibn(cls, isbn): url = cls.isbn_url.format(isbn) result = HTTP.get(url) return result
def search_by_keyword(cls, keyword): url = cls.keyword_url.format(keyword) result = HTTP.get(url) return result
def search_by_isbn(cls, isbn): # 方法一按照ISBN号查询 url = cls.isbn_url.format(isbn) result = HTTP.get(url) # result 是一个字典dict return result
def search_by_isbn(self, isbn): url = self.isbn_url.format(isbn) # dict result = HTTP.get(url) return result
class Scanner(object): FINGERPRINTS = [ { "type": "git", "base": ".git", "files": ["index"] }, { "type": "svn", "base": ".svn", "files": ["wc.db"] }, { "type": "svn_old", "base": ".svn", "files": ["entries"] }, #{ # "type": "hg", # "base": ".hg", # "files": ["store/00manifest.i"] #} ] SCHEMES = ["HTTP", "HTTPS"] def __init__(self, host): self.host = URL(host).replace(path = "", query = "", fragment = "") self.session = HTTP() self.session.headers['User-Agent'] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36" def scan_host(self): for scheme in self.SCHEMES: for fingerprint in self.FINGERPRINTS: for file in fingerprint['files']: url = self.host.replace(path = fingerprint['base'] + "/" + file, scheme = scheme) url = str(url) response = self.session.get(url, verify=False) if response.status_code == 200 and self._filter_false_positive(response.content, fingerprint['type']): return { "file": file, "type": fingerprint['type'], "scheme": scheme, "data": response.content, "host": self.host.replace(scheme = scheme) } else: pass if(response.status_code == 200): pass #print "Failed: File exists, but failed verification." else: pass #print "Failed: HTTP " + str(response.status_code) return False def _filter_false_positive(self, data, type): if "<html" in data and "</html>" in data: return False if type == "git": if data[0:4] != "DIRC": return False if type == "svn_old": if "dir" not in data or "file" not in data: return False if type == "svn": if data[0:13] != "SQLite format": return False if type == "hg": if not data.statswith(".hgtag"): return False return True