Skip to main content
Glama

URL Reputation and Validity Checker

by prismon
history.cpython-313.pyc8.15 kB
� ��7h����SrSSKrSSKJrJr SSKJrJrJr SSKJ r SSK r SSK r SSK r SSK Jr SSKJr "S S 5rg) z'Domain history and reputation checking.�N)�datetime�timezone)�Dict�Optional�Any)�urlparse)�parser�)� DomainHistoryc��\rSrSrSrSS\4SjjrS\S\4SjrS\S\ \\ 44S jr S\S\ \\ 44S jr S \ S\ 4S jrS \SSS\4SjrSrg)�DomainHistoryChecker�z+Check domain history using various sources.� user_agentc��Xlg)N�r)�selfrs �U/home/josh/Projects/reputation-and-validity-checker/url_reputation_checker/history.py�__init__�DomainHistoryChecker.__init__s��$���url�returnc ��# �[R"U5nURSUR3n[R "UR U5URU5SS9IShv�N n[US[5(dUSO0n[US[5(dUSO0nURS5nSnU(a1[R"[R5U- Rn[!UUURS5URS 5URS 5URS S5US 9$N�7f) z!Get comprehensive domain history.�.T)�return_exceptionsNrr � creation_date�expiration_date� registrar�first_snapshot�total_snapshots)�domainrrr�wayback_first_snapshot�wayback_total_snapshots�age_days)� tldextract�extractr!�suffix�asyncio�gather�_get_whois_info�_get_wayback_info� isinstance� Exception�getr�nowr�utc�daysr ) rr� extractedr!�results� whois_info� wayback_inforr$s r�get_domain_history�'DomainHistoryChecker.get_domain_historys+����&�&�s�+� ��$�$�%�Q�y�'7�'7�&8�9�� ��� � � �� (� � "� "�3� '�"� � �� (2�'�!�*�i�'H�'H�W�Q�Z�b� �)3�G�A�J� �)J�)J�w�q�z�PR� �#����7� ��� � � � �X�\�\�2�]�B�H�H�H���'�&�N�N�+<�=� �n�n�[�1�#/�#3�#3�4D�#E�$0�$4�$4�5F��$J�� � � �s�A)E�+E�,CEr!c��N# �[R"5nURS[RU5IShv�N n0n[ US5(aAUR n[ U[5(aUSnU(aURU5US'[ US5(aAURn[ U[5(aUSnU(aURU5US'[ US5(aURUS'U$N�![a n0sSnA$SnAff=f7f)z#Get WHOIS information for a domain.Nrrrr) r(�get_event_loop�run_in_executor�whois�hasattrrr,�list�_ensure_timezonerrr-)rr!�loop�w�resultrr�es rr*�$DomainHistoryChecker._get_whois_info6s��� ��)�)�+�D��*�*�4����f�E�E�A��F��q�/�*�*� !��� ��m�T�2�2�$1�!�$4�M� �.2�.C�.C�M�.R�F�?�+��q�+�,�,�"#�"3�"3���o�t�4�4�&5�a�&8�O�"�04�0E�0E�o�0V�F�,�-��q�+�&�&�&'�k�k��{�#��M�1F��4� ��I�� �sE�D%�9D �D �C D � D%� D � D"�D�D"�D%�D"�"D%c��^^# �[R"5nUU4SjnURSU5IShv�N nU$N![a n0sSnA$SnAff=f7f)z Get Wayback Machine information.c��>�[R"T T R5nUR5nSnU(ay[ US5(ah[ UR 5n[U5S:�aDUSSnUSSnUSSn[[U5[U5[U5[RS9nUR5n[[U55nUUS.$! SnN0=f! SnN=f)N� timestamp�r����tzinfo)rr )� waybackpy�Urlr�oldestr<�strrF�lenr�intrr0�cdx_apir=) �wbrN� oldest_date�ts�year�month�day�cdx�totalrrs ��r�get_wayback_data�@DomainHistoryChecker._get_wayback_info.<locals>.get_wayback_data_s�����]�]�3����8�� '��Y�Y�[�F�"&�K��'�&�+�">�">� ��!1�!1�2���r�7�a�<�#%�a��7�D�$&�q��G�E�"$�Q�q�'�C�*2�3�t�9�c�%�j�#�c�(�[c�[g�[g�*h�K� ��*�*�,�C���S� �N�E� '2�',����'�"&�K�� ��E�s�BC �7$C)� C&�)C/N)r(r9r:r-)rrr?r[rArBs`` rr+�&DomainHistoryChecker._get_wayback_infoYsW����' ��)�)�+�D� �> �/�/��6F�G�G�F��M�H��� ��I�� �sA�A�1A�>�A�A�A� A� A� A� A�A�A�dtc�h�U(a*URcUR[RS9$U$)z)Ensure datetime has timezone information.rJ)rK�replacerr0)rr^s rr>�%DomainHistoryChecker._ensure_timezone�s(�� �"�)�)�#��:�:�X�\�\�:�2� 2�� r�domain_history�validation_result�URLValidationResultc��SnUR(asURS:�aUS- nO]URS:�aUS- nOGURS:�aUS- nO1URS:�aUS - nOURS :�aUS - nOUS - nURS :�a]URS:�aUS- nOGURS:�aUS- nO1URS:�aUS - nOURS :�aUS - nOUS - nUR(aUS - nURS:aUS - nOURS:aUS - nURS:XaUS - n[ UR 5S :XaUS- nO\[ UR 5S:XaUS- nO=[ UR 5S :XaUS - nO[ UR 5S:XaUS - n[US5$)z� Calculate reputation score based on multiple factors. Scoring breakdown: - Domain age: 0-30 points - Wayback presence: 0-20 points - Technical factors: 0-25 points - Consistency: 0-25 points gi!�i��im��� �Z��r�d�2g�?g@���r �gY@)r$r#� ssl_valid� response_time� status_coderP�warnings�min)rrbrc�scores r�calculate_reputation_score�/DomainHistoryChecker.calculate_reputation_score�s����� � "� "��&�&�'�1��� ���(�(�G�3��� ���(�(�C�/��� ���(�(�C�/��� ���(�(�B�.��� ���� �� � 1� 1�A� 5��5�5��<��� ���7�7�2�=��� ���7�7�2�=��� ���7�7�1�<��� ���� �� � &� &� �R�K�E� � *� *�S� 0� �R�K�E� � ,� ,�s� 2� �Q�J�E� � (� (�C� /� �Q�J�E� � �)�)� *�a� /� �R�K�E� �"�+�+� ,�� 1� �R�K�E� �"�+�+� ,�� 1� �R�K�E� �"�+�+� ,�� 1� �Q�J�E��5�%� � rrN)zURL-Reputation-Checker/1.0)�__name__� __module__� __qualname__�__firstlineno__�__doc__rOrr r6rrr*r+rr>�floatry�__static_attributes__�rrr r s���5�%�3�%� �C� �M� �@!�C�!�D��c��N�!�F)�3�)�4��S��>�)�V�8���� @!�1>�@!�4I�@!�NS�@!rr )rr(rr�typingrrr� urllib.parserr;rLr%�dateutilr � date_parser�modelsr r r�rr�<module>r�s2��-��'�&�&�!� ���*�!�z!�z!r

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/prismon/reputation-checker-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server