@@ -0,0 +1,1213 @@
+from datetime import timedelta%0Aimport logging%0A%0Afrom core.observables import Url%0Afrom core.feed import Feed%0Afrom core.errors import ObservableValidationError%0A%0A%0Aclass OpenPhish(Feed):%0A%0A    # set default values for feed%0A    default_values = %7B%0A        'frequency': timedelta(hours=12),%0A        'name': 'PhishingDatabase',%0A        'source': 'https://raw.githubusercontent.com/mitchellkrogza/Phishing.Database/master/phishing-links-NEW-today.txt',%0A        'description':%0A            'Phishing Domains, urls websites and threats database.'%0A    %7D%0A%0A    # should tell yeti how to get and chunk the feed%0A    def update(self):%0A        # Using update_lines because the pull should result in%0A        # a list of URLs, 1 per line. Split on newline%0A        for url in self.update_lines():%0A            self.analyze(url)%0A%0A    # don't need to do much here; want to add the information%0A    # and tag it with 'phishing'%0A    def analyze(self, url):%0A        context = %7B'source': self.name%7D%0A%0A        try:%0A            url = Url.get_or_create(value=url)%0A            url.add_context(context)%0A            url.add_source(self.name)%0A            url.tag(%5B'phishing'%5D)%0A        except ObservableValidationError as e:%0A            logging.error(e)%0A

Create phishing_database.py