Как правильно получить API Google для проверок сайта на безопасность?
Всем привет!
В некоторых браузерах выходит предупреждение что: Осторожно, поддельный сайт! , Это небезопасный сайт, Deceptive site ahead
Создал скрипт на python, который будет считывать текстовый файл domains.txt и проверять в нем доменные имена, необходимо проверить чтобы на домене не выходило предупреждение: Осторожно, поддельный сайт! , Это небезопасный сайт, Deceptive site ahead.
Условия:
1. Если домен является поддельным (Осторожно, поддельный сайт! , Это небезопасный сайт, Deceptive site ahead) - необходимо создать текстовый файл block_domain.txt и записать его туда
2. Если домен не является поддельным (Осторожно, поддельный сайт! , Это небезопасный сайт, Deceptive site ahead) - необходимо создать файл white_domain.txt и записать его туда
Скрипт должен проверять информацию о домене на Safe Browsing site status.
Написал все это дело я на Python:
import urllib.request import json # Функция проверки безопасности домена на основе сервиса SafeBrowsing def check_domain(domain): url = "https://safebrowsing.googleapis.com/v4/threatMatches:find" api_key = "тут мой API ключ" # мойAPI ключ headers = {"Content-Type": "application/json", "Authorization": f"Bearer {api_key}"} data = { "client": { "clientId": "mycompany", "clientVersion": "1.5.2" }, "threatInfo": { "threatTypes": ["MALWARE", "SOCIAL_ENGINEERING", "UNWANTED_SOFTWARE", "POTENTIALLY_HARMFUL_APPLICATION"], "platformTypes": ["ANY_PLATFORM"], "threatEntryTypes": ["URL"], "threatEntries": [{"url": domain}] } } try: req = urllib.request.Request(url=url, headers=headers, data=json.dumps(data).encode("utf-8")) response = urllib.request.urlopen(req) result = json.loads(response.read().decode("utf-8")) if result.get("matches"): return True else: return False except urllib.error.HTTPError as e: print(f"HTTP Error: {e.code} - {e.reason}") return False # Открытие файла для чтения with open("domains.txt", "r") as file: # Открытие файлов для записи block_file = open("block_domain.txt", "w") white_file = open("white_domain.txt", "w") # Чтение каждой строки файла domains.txt for line in file: domain = line.strip() # Удаление пробелов и переносов строки if check_domain(domain): block_file.write(domain + "n") # Запись в файл block_domain.txt else: white_file.write(domain + "n") # Запись в файл white_domain.txt # Закрытие файлов block_file.close() white_file.close() |
import urllib.request import json # Функция проверки безопасности домена на основе сервиса SafeBrowsing def check_domain(domain): url = "https://safebrowsing.googleapis.com/v4/threatMatches:find" api_key = "тут мой API ключ" # мойAPI ключ headers = {"Content-Type": "application/json", "Authorization": f"Bearer {api_key}"} data = { "client": { "clientId": "mycompany", "clientVersion": "1.5.2" }, "threatInfo": { "threatTypes": ["MALWARE", "SOCIAL_ENGINEERING", "UNWANTED_SOFTWARE", "POTENTIALLY_HARMFUL_APPLICATION"], "platformTypes": ["ANY_PLATFORM"], "threatEntryTypes": ["URL"], "threatEntries": [{"url": domain}] } } try: req = urllib.request.Request(url=url, headers=headers, data=json.dumps(data).encode("utf-8")) response = urllib.request.urlopen(req) result = json.loads(response.read().decode("utf-8")) if result.get("matches"): return True else: return False except urllib.error.HTTPError as e: print(f"HTTP Error: {e.code} - {e.reason}") return False # Открытие файла для чтения with open("domains.txt", "r") as file: # Открытие файлов для записи block_file = open("block_domain.txt", "w") white_file = open("white_domain.txt", "w") # Чтение каждой строки файла domains.txt for line in file: domain = line.strip() # Удаление пробелов и переносов строки if check_domain(domain): block_file.write(domain + "n") # Запись в файл block_domain.txt else: white_file.write(domain + "n") # Запись в файл white_domain.txt # Закрытие файлов block_file.close() white_file.close()
Так вот при запуске скрипта он мне выдает:
HTTP Error: 400 - Bad Request HTTP Error: 400 - Bad Request HTTP Error: 400 - Bad Request HTTP Error: 400 - Bad Request |
HTTP Error: 400 - Bad Request HTTP Error: 400 - Bad Request HTTP Error: 400 - Bad Request HTTP Error: 400 - Bad Request
API ключе верный, никаких ограничений нет. Может сейчас что-то изменилось? Или для Россия какие-то ограничения есть (с vpn та же история)
Дополнительно:
А сам текст респонса возвращается? Ну и судя по неймингу, передавать нужно не домен, а URL
HTTP Error: 400 - Bad Request
HTTP Error: 400 - Bad Request
HTTP Error: 400 - Bad Request
HTTP Error: 400 - Bad Request
Или ты про что
Тут ключ передают либо как GET параметр, либо в хедере X-goog-api-key
https://cloud.google.com/docs/authentication/api-k...
Слушай, получилось! Ошибок никаких не получаю (400 bad request) , но в block_domain ничего не пишется.
Вот что поменял:
import urllib.request import json # Функция проверки безопасности домена на основе сервиса SafeBrowsing def check_domain(domain): url = "https://safebrowsing.googleapis.com/v4/threatMatches:find" api_key = "тут мой api ключ" headers = {"Content-Type": "application/json", "x-goog-api-key": api_key} data = { "client": { "clientId": "mycompany", "clientVersion": "1.5.2" }, "threatInfo": { "threatTypes": ["MALWARE", "SOCIAL_ENGINEERING", "UNWANTED_SOFTWARE", "POTENTIALLY_HARMFUL_APPLICATION"], "platformTypes": ["ANY_PLATFORM"], "threatEntryTypes": ["URL"], "threatEntries": [{"url": domain}] } } try: req = urllib.request.Request(url=url, headers=headers, data=json.dumps(data).encode("utf-8")) response = urllib.request.urlopen(req) result = json.loads(response.read().decode("utf-8")) if result.get("matches"): return True else: return False except urllib.error.HTTPError as e: print(f"HTTP Error: {e.code} - {e.reason}") return False # Открытие файла для чтения with open("domains.txt", "r") as file: # Открытие файлов для записи block_file = open("block_domain.txt", "w") white_file = open("white_domain.txt", "w") # Чтение каждой строки файла domains.txt for line in file: domain = line.strip() # Удаление пробелов и переносов строки if check_domain(domain): block_file.write(domain + "n") # Запись в файл block_domain.txt else: white_file.write(domain + "n") # Запись в файл white_domain.txt # Закрытие файлов block_file.close() white_file.close() |
import urllib.request import json # Функция проверки безопасности домена на основе сервиса SafeBrowsing def check_domain(domain): url = "https://safebrowsing.googleapis.com/v4/threatMatches:find" api_key = "тут мой api ключ" headers = {"Content-Type": "application/json", "x-goog-api-key": api_key} data = { "client": { "clientId": "mycompany", "clientVersion": "1.5.2" }, "threatInfo": { "threatTypes": ["MALWARE", "SOCIAL_ENGINEERING", "UNWANTED_SOFTWARE", "POTENTIALLY_HARMFUL_APPLICATION"], "platformTypes": ["ANY_PLATFORM"], "threatEntryTypes": ["URL"], "threatEntries": [{"url": domain}] } } try: req = urllib.request.Request(url=url, headers=headers, data=json.dumps(data).encode("utf-8")) response = urllib.request.urlopen(req) result = json.loads(response.read().decode("utf-8")) if result.get("matches"): return True else: return False except urllib.error.HTTPError as e: print(f"HTTP Error: {e.code} - {e.reason}") return False # Открытие файла для чтения with open("domains.txt", "r") as file: # Открытие файлов для записи block_file = open("block_domain.txt", "w") white_file = open("white_domain.txt", "w") # Чтение каждой строки файла domains.txt for line in file: domain = line.strip() # Удаление пробелов и переносов строки if check_domain(domain): block_file.write(domain + "n") # Запись в файл block_domain.txt else: white_file.write(domain + "n") # Запись в файл white_domain.txt # Закрытие файлов block_file.close() white_file.close()
result = json.loads(response.read().decode("utf-8")) print(result) |
result = json.loads(response.read().decode("utf-8")) print(result)
Возвращает:
{}
{}
{}
{}
Note: If there are no matches (that is, if none of the URLs specified in the request are found on any of the lists specified in a request), the HTTP POST response simply returns an empty object in the response body.
API токен должен передаваться в заголовке X-goog-api-key
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для получения API Google для проверок сайта на безопасность, вам необходимо выполнить следующие шаги:
1. Перейдите на официальный сайт Google Developers Console и авторизуйтесь под своим аккаунтом Google.
2. Создайте новый проект, нажав на кнопку "Create Project" и введите название проекта.
3. После создания проекта, перейдите в раздел "APIs & Services" и выберите "Library" из бокового меню.
4. Найдите и активируйте необходимые API для проверки безопасности сайта, например, Google Safe Browsing API.
5. Перейдите в раздел "Credentials" и создайте новый ключ API. Выберите тип ключа, который подходит для ваших целей, например, ключ для ограниченного доступа.
6. После создания ключа API, скопируйте его и используйте в своем коде для проверки безопасности вашего сайта.
Пример использования API Google для проверки безопасности сайта на PHP: