NAV Navbar
Logo
Curl Go Python JavaScript C# Java
  • Workflows
  • Getting Started
  • Changelog
  • Purpose
  • Services
  • Service Model
  • How It Works
  • Api Registry
  • Portal
  • Workflows

    Getting Started

    Hackers use phishing URLs to obtain and misuse sensitive data such as your identity, passwords or banking information. The first step of hackers who reach you via e-mail is to send you a trustworthy e-mail. The hackers who gain your trust are waiting for you to enter the data that you need to use your personal information such as password reset, authentication, and to redirect you to these fake web pages they created in Step 2, so that your information is stolen by the hackers.

    Phishup uses advanced real-time machine learning and image processing so it detects malicious URLs at the millisecond level. It uses thousands of feature vectors gathered from the latest attack trends and starts tracking from the moment any domain name is purchased.

    Our application, which has over 1 million URL scans around the world, is an artificial intelligence-based protection application that works in high quality and provides accurate results within seconds and proven reliability. Our application, which has a 30% higher success rate in local attacks compared to its global competitors, has a false positive rate of less than 1%.

    Changelog

    No change for now.

    Purpose

    In 2019 alone, people who fell into this trap were scammed over $58 million. Today, 91% of hacking attempts are made up of such phishing attacks. Phishup.co, which was established in 2019 and has been developing for years with artificial intelligence and deep learning techniques by DIATTACK company, aims to provide high protection to its customers against identity attacks with its real-time URL security system.

    Services

    Phishup provides its customers with rich content services. We tried to describe our services below.

    Service Model

    Integration with global security products - API
    Value-added service cooperation with telecom operators Saas API
    Restful API request service SaaS API
    Internet filtering with Internet service providers - API
    End use security Saas -

    How It Works

    If you wish, you can get detailed query results by entering the url you want to query from our homepage.

    If you wish, you can learn how to access and start using the phishup api by browsing the API Registry section.

    Api Registry

    Apart from an interface, we also provided API support to our customers that they can integrate into their projects. You can start integrating simple command lines requesting the Phishup API into your project with any of 6 different programming languages on the right side of the page. Do not forget to use the api key we have defined for you after registering on our website!

    Single Url Query

    curl --location --request POST 'http://apiv2.phishup.co/sherlock/investigate?apikey=YOUR_API_KEY' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "Url": "http://sample-url.com/"
    }'
    
    package main
    
    import (
      "fmt"
      "strings"
      "net/http"
      "io/ioutil"
    )
    
    func main() {
    
      url := "http://apiv2.phishup.co/sherlock/investigate?apikey=YOUR_API_KEY"
      method := "POST"
    
      payload := strings.NewReader(`{
        "Url": "http://sample-url.com/"
    }`)
    
      client := &http.Client {
      }
      req, err := http.NewRequest(method, url, payload)
    
      if err != nil {
        fmt.Println(err)
        return
      }
      req.Header.Add("Content-Type", "application/json")
    
      res, err := client.Do(req)
      if err != nil {
        fmt.Println(err)
        return
      }
      defer res.Body.Close()
    
      body, err := ioutil.ReadAll(res.Body)
      if err != nil {
        fmt.Println(err)
        return
      }
      fmt.Println(string(body))
    }
    
    import requests
    import json
    
    url = "http://apiv2.phishup.co/sherlock/investigate?apikey=YOUR_API_KEY"
    
    payload = json.dumps({
      "Url": "http://sample-url.com/"
    })
    headers = {
      'Content-Type': 'application/json'
    }
    
    response = requests.request("POST", url, headers=headers, data=payload)
    
    print(response.text)
    
    
    var myHeaders = new Headers();
    myHeaders.append("Content-Type", "application/json");
    
    var raw = JSON.stringify({
      "Url": "http://sample-url.com/"
    });
    
    var requestOptions = {
      method: 'POST',
      headers: myHeaders,
      body: raw,
      redirect: 'follow'
    };
    
    fetch("http://apiv2.phishup.co/sherlock/investigate?apikey=YOUR_API_KEY", requestOptions)
      .then(response => response.text())
      .then(result => console.log(result))
      .catch(error => console.log('error', error));
    
    var client = new RestClient("http://apiv2.phishup.co/sherlock/investigate?apikey=YOUR_API_KEY");
    client.Timeout = -1;
    var request = new RestRequest(Method.POST);
    request.AddHeader("Content-Type", "application/json");
    var body = @"{" + "\n" +
    @"    ""Url"": ""http://sample-url.com/""" + "\n" +
    @"}";
    request.AddParameter("application/json", body,  ParameterType.RequestBody);
    IRestResponse response = client.Execute(request);
    Console.WriteLine(response.Content);
    
    OkHttpClient client = new OkHttpClient().newBuilder()
      .build();
    MediaType mediaType = MediaType.parse("application/json");
    RequestBody body = RequestBody.create(mediaType, "{\n    \"Url\": \"http://sample-url.com/\"\n}");
    Request request = new Request.Builder()
      .url("http://apiv2.phishup.co/sherlock/investigate?apikey=YOUR_API_KEY")
      .method("POST", body)
      .addHeader("Content-Type", "application/json")
      .build();
    Response response = client.newCall(request).execute();
    

    This is the response we should get

    {
        "Status": {
            "Result": "Success",
            "Message": ""
        },
        "Result": {
            "IncomingUrl": "http://sample-url.com/",
            "TargetHostname": "http://sample-url.com/",
            "IsRouted": false,
            "PhishUpStatus": "Clean",
            "PhishUpScore": "1.0"
        }
    }
    

    By integrating the single url query into your project, you can clearly find out whether the URL you are querying is a phishing trap or a clean url.

    Request Information

    Category Value
    Http Request POST
    URL http://apiv2.phishup.co/sherlock/investigate?apikey=YOUR_API_KEY

    Input Shema for Request

    Category Value
    "Url": "http://sample-url.com/"

    Output Shema of Request

    Field Meaning
    Url Enter the url you want to query

    Detail Url Query

    curl --location --request POST 'http://apiv2.phishup.co/sherlock/watson?apikey=YOUR_API_KEY' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "Url": "hurriyet.com.tr"
    }'
    
    package main
    
    import (
      "fmt"
      "strings"
      "net/http"
      "io/ioutil"
    )
    
    func main() {
    
      url := "http://apiv2.phishup.co/sherlock/watson?apikey=YOUR_API_KEY"
      method := "POST"
    
      payload := strings.NewReader(`{
        "Url": "hurriyet.com.tr"
    }`)
    
      client := &http.Client {
      }
      req, err := http.NewRequest(method, url, payload)
    
      if err != nil {
        fmt.Println(err)
        return
      }
      req.Header.Add("Content-Type", "application/json")
    
      res, err := client.Do(req)
      if err != nil {
        fmt.Println(err)
        return
      }
      defer res.Body.Close()
    
      body, err := ioutil.ReadAll(res.Body)
      if err != nil {
        fmt.Println(err)
        return
      }
      fmt.Println(string(body))
    }
    
    import requests
    import json
    
    url = "http://apiv2.phishup.co/sherlock/watson?apikey=YOUR_API_KEY"
    
    payload = json.dumps({
      "Url": "hurriyet.com.tr"
    })
    headers = {
      'Content-Type': 'application/json'
    }
    
    response = requests.request("POST", url, headers=headers, data=payload)
    
    print(response.text)
    
    var myHeaders = new Headers();
    myHeaders.append("Content-Type", "application/json");
    
    var raw = JSON.stringify({
      "Url": "hurriyet.com.tr"
    });
    
    var requestOptions = {
      method: 'POST',
      headers: myHeaders,
      body: raw,
      redirect: 'follow'
    };
    
    fetch("http://apiv2.phishup.co/sherlock/watson?apikey=YOUR_API_KEY", requestOptions)
      .then(response => response.text())
      .then(result => console.log(result))
      .catch(error => console.log('error', error));
    
    var client = new RestClient("http://apiv2.phishup.co/sherlock/watson?apikey=YOUR_API_KEY");
    client.Timeout = -1;
    var request = new RestRequest(Method.POST);
    request.AddHeader("Content-Type", "application/json");
    var body = @"{" + "\n" +
    @"    ""Url"": ""hurriyet.com.tr""" + "\n" +
    @"}";
    request.AddParameter("application/json", body,  ParameterType.RequestBody);
    IRestResponse response = client.Execute(request);
    Console.WriteLine(response.Content);
    
    OkHttpClient client = new OkHttpClient().newBuilder()
      .build();
    MediaType mediaType = MediaType.parse("application/json");
    RequestBody body = RequestBody.create(mediaType, "{\n    \"Url\": \"hurriyet.com.tr\"\n}");
    Request request = new Request.Builder()
      .url("http://apiv2.phishup.co/sherlock/watson?apikey=YOUR_API_KEY")
      .method("POST", body)
      .addHeader("Content-Type", "application/json")
      .build();
    Response response = client.newCall(request).execute();
    

    This is the response we should get

    {
        "Status": {
            "Result": "Success",
            "Message": ""
        },
        "Result": {
            "IncomingUrl": "http://sample-url.com/",
            "TargetHostname": "http://sample-url.com/",
            "IsRouted": false,
            "PhishUpStatus": "Clean",
            "PhishUpScore": "1.0",
            "ScoreDomain": 78,
            "ContentSimilarity": 0,
            "Backlink": "",
            "CountryCode": "SG",
            "RegistrarName": "",
            "Host": "157.240.238.35",
            "CertificateIssuer": "C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA",
            "CertificateStart": "2021-12-06T00:00:00Z",
            "CertificateEnd": "2022-03-06T23:59:59Z",
            "DOM":"<html lang=\"en\" id=\"facebook\" class=\"\"><head><meta charset=\"utf-8\"><meta name=\"referrer\" content=\"origin-when-crossorigin\" id=\"meta_referrer\"><script...",
            "Screenshot": "iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAIAAABAH0oBAAAgAElEQVR4AezB3W8U6b4v9u+vqtrvbfC7G2PjN8C8GHjMAMMsZu8VJdpRbiZS..."
        }
    }
    

    Returns the detailed information on the phishup site of the entered url.

    Request Information

    Category Value
    Http Request POST
    URL http://apiv2.phishup.co/sherlock/watson?apikey=YOUR_API_KEY

    Input Shema for Request

    Category Value
    "Url": "http://sample-url.com/"

    Output Shema of Request

    Field Meaning
    Url Enter the url you want to query

    Bulk Url Query

    curl --location --request POST 'http://apiv2.phishup.co/sherlock/bulk?apikey=YOUR_API_KEY' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "Urls": ["http://sample-url.com/", "http://sample-url.com/", "http://sample-url.com/"]
    }'
    
    package main
    
    import (
      "fmt"
      "strings"
      "net/http"
      "io/ioutil"
    )
    
    func main() {
    
      url := "http://apiv2.phishup.co/sherlock/bulk?apikey=YOUR_API_KEY"
      method := "POST"
    
      payload := strings.NewReader(`{
        "Urls": ["http://sample-url.com/", "http://sample-url.com/", "http://sample-url.com/"]
    }`)
    
      client := &http.Client {
      }
      req, err := http.NewRequest(method, url, payload)
    
      if err != nil {
        fmt.Println(err)
        return
      }
      req.Header.Add("Content-Type", "application/json")
    
      res, err := client.Do(req)
      if err != nil {
        fmt.Println(err)
        return
      }
      defer res.Body.Close()
    
      body, err := ioutil.ReadAll(res.Body)
      if err != nil {
        fmt.Println(err)
        return
      }
      fmt.Println(string(body))
    }
    
    import requests
    import json
    
    url = "http://apiv2.phishup.co/sherlock/bulk?apikey=YOUR_API_KEY"
    
    payload = json.dumps({
      "Urls": [
        "http://sample-url.com/",
        "http://sample-url.com/",
        "http://sample-url.com/"
      ]
    })
    headers = {
      'Content-Type': 'application/json'
    }
    
    response = requests.request("POST", url, headers=headers, data=payload)
    
    print(response.text)
    
    var myHeaders = new Headers();
    myHeaders.append("Content-Type", "application/json");
    
    var raw = JSON.stringify({
      "Urls": [
        "http://sample-url.com/",
        "http://sample-url.com/",
        "http://sample-url.com/"
      ]
    });
    
    var requestOptions = {
      method: 'POST',
      headers: myHeaders,
      body: raw,
      redirect: 'follow'
    };
    
    fetch("http://apiv2.phishup.co/sherlock/bulk?apikey=YOUR_API_KEY", requestOptions)
      .then(response => response.text())
      .then(result => console.log(result))
      .catch(error => console.log('error', error));
    
    var client = new RestClient("http://apiv2.phishup.co/sherlock/bulk?apikey=YOUR_API_KEY");
    client.Timeout = -1;
    var request = new RestRequest(Method.POST);
    request.AddHeader("Content-Type", "application/json");
    var body = @"{" + "\n" +
    @"    ""Urls"": [""http://sample-url.com/"", ""http://sample-url.com/"", ""http://sample-url.com/""]" + "\n" +
    @"}";
    request.AddParameter("application/json", body,  ParameterType.RequestBody);
    IRestResponse response = client.Execute(request);
    Console.WriteLine(response.Content);
    
    OkHttpClient client = new OkHttpClient().newBuilder()
      .build();
    MediaType mediaType = MediaType.parse("application/json");
    RequestBody body = RequestBody.create(mediaType, "{\n    \"Urls\": [\"http://sample-url.com/\", \"http://sample-url.com/\", \"http://sample-url.com/\"]\n}");
    Request request = new Request.Builder()
      .url("http://apiv2.phishup.co/sherlock/bulk?apikey=YOUR_API_KEY")
      .method("POST", body)
      .addHeader("Content-Type", "application/json")
      .build();
    Response response = client.newCall(request).execute();
    

    This is the response we should get

    {
        "Status": {
            "Result": "Success",
            "Message": "Success/Total: 3/3"
        },
        "Result": [
            {
                "IncomingUrl": "http://sample-url.com/",
                "TargetHostname": "http://sample-url.com/",
                "IsRouted": false,
                "PhishUpStatus": "Clean",
                "PhishUpScore": "1.0"
            },
            {
                "IncomingUrl": "http://sample-url.com/",
                "TargetHostname": "http://sample-url.com/",
                "IsRouted": false,
                "PhishUpStatus": "Clean",
                "PhishUpScore": "1.0"
            },
            {
                "IncomingUrl": "http://sample-url.com/",
                "TargetHostname": "m.vk.com",
                "IsRouted": true,
                "PhishUpStatus": "Phish",
                "PhishUpScore": "1.0"
            }
        ]
    }
    

    Instead of making your queries one by one, you can create a list of your URLs and perform a collective scan. In this way, you can see whether each URL you enter is clean or a phishing trap.

    Request Information

    Category Value
    Http Request POST
    URL http://apiv2.phishup.co/sherlock/bulk?apikey=YOUR_API_KEY

    Input Shema for Request

    Category Value
    "Urls": ["http://sample-url.com/", "http://sample-url.com/", "http://sample-url.com/"]

    Output Shema of Request

    Field Meaning
    Urls Enter the urls you want to query

    Error

    If the identity is not authenticated, 'bulk' query return this response.

    {
        "Status": {
            "Result": "Error",
            "Message": "Authentication Error"
        },
        "Result": []
    }
    


    If the identity is not authenticated, 'watson' query return this response.

    {
        "Status": {
            "Result": "Error",
            "Message": "Authentication Error"
        },
        "Result": {
            "IncomingUrl": "",
            "TargetHostname": "",
            "IsRouted": false,
            "PhishUpStatus": "",
            "PhishUpScore": "",
            "ScoreDomain": 0,
            "ContentSimilarity": 0,
            "Backlink": "",
            "CountryCode": "",
            "RegistrarName": "",
            "Host": "",
            "CertificateIssuer": "",
            "CertificateStart": "",
            "CertificateEnd": "",
            "DOM": "",
            "Screenshot": ""
        }
    }
    


    If the identity is not authenticated, 'investigate' query return this response.

    {
        "Status": {
            "Result": "Error",
            "Message": "Authentication Error"
        },
        "Result": {
            "IncomingUrl": "",
            "TargetHostname": "",
            "IsRouted": false,
            "PhishUpStatus": "",
            "PhishUpScore": ""
        }
    }
    

    If you have exceeded the usage limit, 'bulk' query return this response.

    {
        "Status": {
            "Result": "Error",
            "Message": "Request Limit Exceeded"
        },
        "Result": []
    }
    


    If you have exceeded the usage limit, 'watson' query return this response.

    {
        "Status": {
            "Result": "Error",
            "Message": "Request Limit Exceeded"
        },
        "Result": {
            "IncomingUrl": "",
            "TargetHostname": "",
            "IsRouted": false,
            "PhishUpStatus": "",
            "PhishUpScore": "",
            "ScoreDomain": 0,
            "ContentSimilarity": 0,
            "Backlink": "",
            "CountryCode": "",
            "RegistrarName": "",
            "Host": "",
            "CertificateIssuer": "",
            "CertificateStart": "",
            "CertificateEnd": "",
            "DOM": "",
            "Screenshot": ""
        }
    }
    


    If you have exceeded the usage limit, 'investigate' query return this response.

    {
        "Status": {
            "Result": "Error",
            "Message": "Request Limit Exceeded"
        },
        "Result": {
            "IncomingUrl": "",
            "TargetHostname": "",
            "IsRouted": false,
            "PhishUpStatus": "",
            "PhishUpScore": ""
        }
    }
    
    {
        "Status": {
            "Result": "Error",
            "Message": "Not Enough Request Limit "
        },
        "Result": []
    }
    

    If your subscription is ended, 'bulk' query return this response.

    {
        "Status": {
            "Result": "Error",
            "Message": "Subscription Expired"
        },
        "Result": []
    }
    


    If your subscription is ended, 'watson' query return this response.

    {
        "Status": {
            "Result": "Error",
            "Message": "Subscription Expired"
        },
        "Result": {
            "IncomingUrl": "",
            "TargetHostname": "",
            "IsRouted": false,
            "PhishUpStatus": "",
            "PhishUpScore": "",
            "ScoreDomain": 0,
            "ContentSimilarity": 0,
            "Backlink": "",
            "CountryCode": "",
            "RegistrarName": "",
            "Host": "",
            "CertificateIssuer": "",
            "CertificateStart": "",
            "CertificateEnd": "",
            "DOM": "",
            "Screenshot": ""
        }
    }
    


    If your subscription is ended, 'investigate' query return this response.

    {
        "Status": {
            "Result": "Error",
            "Message": "Subscription Expired"
        },
        "Result": {
            "IncomingUrl": "",
            "TargetHostname": "",
            "IsRouted": false,
            "PhishUpStatus": "",
            "PhishUpScore": ""
        }
    }
    

    If your post body is invalid, 'bulk' query return this response.

    {
        "Status": {
            "Result": "Error",
            "Message": "Invalid URLs"
        },
        "Result": []
    }
    


    If your post body is invalid, 'watson' query return this response.

    {
        "Status": {
            "Result": "Error",
            "Message": "Invalid URL"
        },
        "Result": {
            "IncomingUrl": "",
            "TargetHostname": "",
            "IsRouted": false,
            "PhishUpStatus": "",
            "PhishUpScore": "",
            "ScoreDomain": 0,
            "ContentSimilarity": 0,
            "Backlink": "",
            "CountryCode": "",
            "RegistrarName": "",
            "Host": "",
            "CertificateIssuer": "",
            "CertificateStart": "",
            "CertificateEnd": "",
            "DOM": "",
            "Screenshot": ""
        }
    }
    


    If your post body is invalid, 'investigate' query return this response.

    {
        "Status": {
            "Result": "Error",
            "Message": "Invalid URL"
        },
        "Result": {
            "IncomingUrl": "",
            "TargetHostname": "",
            "IsRouted": false,
            "PhishUpStatus": "",
            "PhishUpScore": ""
        }
    }
    

    If your post body is empty, 'bulk' query return this response.

    {
        "Status": {
            "Result": "Error",
            "Message": "Bad Post Body"
        },
        "Result": []
    }
    


    If your post body is empty, 'watson' query return this response.

    {
        "Status": {
            "Result": "Error",
            "Message": "Bad Post Body"
        },
        "Result": {
            "IncomingUrl": "",
            "TargetHostname": "",
            "IsRouted": false,
            "PhishUpStatus": "",
            "PhishUpScore": "",
            "ScoreDomain": 0,
            "ContentSimilarity": 0,
            "Backlink": "",
            "CountryCode": "",
            "RegistrarName": "",
            "Host": "",
            "CertificateIssuer": "",
            "CertificateStart": "",
            "CertificateEnd": "",
            "DOM": "",
            "Screenshot": ""
        }
    }
    


    If your post body is empty, 'investigate' query return this response.

    {
        "Status": {
            "Result": "Error",
            "Message": "Bad Post Body"
        },
        "Result": {
            "IncomingUrl": "",
            "TargetHostname": "",
            "IsRouted": false,
            "PhishUpStatus": "",
            "PhishUpScore": ""
        }
    }
    

    Portal

    Quick Started

    We have created an interface that our users can use easily. In this section, we will talk about the content of our website in order to help you.

    Register

    register

    By clicking on this section, you can register by entering your name, phone number, e-mail address and password.

    Login

    login

    You can log in to our portal by entering your e-mail address and password from the user data you have created.

    Contact

    login

    If you have any requests, problems or questions, this is the tab where you can access our contact and location information. If you wish, you can contact us immediately by filling out the form below.

    Blog

    The tab where you can access valuable articles that we share with our users.

    Pricing

    usergrouping

    It is the pricing tab for Phishup. Phishup has defined a monthly total of 250 url scans for you, our valued users, where you can make a maximum of 25 scans per day. If you wish, you can choose the most suitable package for you from this tab and set your monthly limit according to you.

    Dashboard

    After logging in, you can see dashboard, profile settings, API docs options on the left side of the page. dashboard

    dashboard