Пример #1
0
 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
Пример #2
0
 def search_by_isbn(cls,isbn):
     url = cls.isbn_url.format(isbn)
     result = HTTP.get(url)
     # url = self.isbn_url
     return result
Пример #3
0
 def search_by_keyword(cls,keyword,count=15,start=0):
     url = cls.keyword_url.format(keyword,count,start)
     result = HTTP.get(url)
     return result
Пример #4
0
# _*_ 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
Пример #5
0
 def search_by_keyword(cls, keyword):
     url = cls.KEYWORD_URL.format(keyword)
     result = HTTP.get(url)
     return result
Пример #6
0
 def search_by_isbn(cls, isbn):
     url = cls.ISBN_URL.format(isbn)
     result = HTTP.get(url)
     return result
Пример #7
0
 def search_by_isbn(cls, isbn):
     url = YuShuBook.isbn_url.format(isbn)
     result = HTTP.get(cls, url)
     return cls(result)
Пример #8
0
 def search_by_keyword(cls, keyword):
     url = YuShuBook.keyword_url.format(keyword)
     result = HTTP.get(cls, url)
     return cls(result)
Пример #9
0
 def search_by_sibn(cls, isbn):
     url = cls.isbn_url.format(isbn)
     result = HTTP.get(url)
     return result
Пример #10
0
 def search_by_keyword(cls, keyword):
     url = cls.keyword_url.format(keyword)
     result = HTTP.get(url)
     return result
Пример #11
0
 def search_by_isbn(cls, isbn):  # 方法一按照ISBN号查询
     url = cls.isbn_url.format(isbn)
     result = HTTP.get(url)  # result 是一个字典dict
     return result
Пример #12
0
 def search_by_isbn(self, isbn):
     url = self.isbn_url.format(isbn)
     # dict
     result = HTTP.get(url)
     return result
Пример #13
0
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