What is the best way to monitor and record the URLs called by device to establish or monitor browsing history?

812

Use OpenDNS as your upstream DNS server on your router.

How it works:

Every device that uses this router will get it's DHCP lease from the router, which will say send me all your DNS queries. The router will forward them all to the OpenDNS servers.

You can then log into their web portal to set parental controls.

Benefits:

  • Quick, simple, effective
  • No new hardware/software to setup
  • Captures HTTPs traffic.

https://www.opendns.com/home-solutions/parental-controls/

Share:
812
VK321
Author by

VK321

Updated on September 18, 2022

Comments

  • VK321
    VK321 almost 2 years

    I am working on swift 3 application and want to build login system using REST API. First I wanted a way to post data to server (PHP + MYSQL) with parameters so I found this post.

    HTTP Request in Swift with POST method

    Now I wanted place this code in a method as helper so I can utilise this method from anywhere in app. Hence followed this way:

    Where to put reusable functions in IOS Swift?

    Current code is as follow:

    import Foundation
    
    class Helper {
    
    
    static func postData(resource: String, params: [String: String]) -> [String:String] {
    
        var request = URLRequest(url: URL(string: "http://localsite.dev/api/\(resource)")!)
        request.httpMethod = "POST"
    
        var qryString: String = "?key=abcd"
        for (paramKey, paramVal) in params {
            qryString = qryString.appending("&\(paramKey)=\(paramVal)")
        }
    
        request.httpBody = qryString.data(using: .utf8)
    
        let task = URLSession.shared.dataTask(with: request) { data, response, error in
    
            guard let data = data, error == nil else {
                print("Error")
                return
            }
    
            if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
                print("Error on HTTP")
                return
            }
    
            let responseString = String(data: data, encoding: .utf8)
            print("success and here is returned data \(responseString)")
        }
    
        task.resume()
    
        return ["data" : "some data"]
    
    }
    }
    

    Call this using

    let loginDetails: [String: String] = ["email": emailTxt.text!, "pass": passTxt.text!]
    Helper.postData(resource: "login", params: loginDetails)
    

    In above method rather then printing data I want to return data as per below 4 conditions.

    1.If error in request data then I want to return as

    [“status”: false, “message”: “Something wrong with request”]
    

    2.If error in HTTP request

    [“status”: false, “message”: “Resource not found”]
    

    3.If login fail

    [“status”: false, “message”: “Wrong login details”]
    

    4.If login success

    [“status”: true, “message”: “Login success”]
    
    • Chris S
      Chris S about 12 years
      "I know that Xfinity does record this information" - I strongly doubt Xfinity gives two hoots about your browsing habits unless you specifically ask them to. In any case, home questions are off-topic on Server Fault and this will be migrated to our sister site Super User. If you're interested in setting up a proxy server between your network and the Internet I highly recommend the DansGuardian and Squid combo. There are of course commercial products that can accomplish the same thing.
    • Fran
      Fran about 12 years
      @DesiraeTilford You do realize that you won't see the content of any HTTPS connections those browsers make (including the URLs they request, but you will see the remote IP addresses to which they connect)? Unless you do some hacking on the browsers themselves you can't see the URLs in HTTPS connections.
    • John Watson
      John Watson about 12 years
      This is a good guide: howtogeek.com/68886/…. You'll need some technical chops to deal with the logs your router makes.
    • Paulw11
      Paulw11 over 7 years
      You will need to pass a completion handler closure to your function and have the completion handler of the task invoke that handler to get the values back to your caller
    • VK321
      VK321 over 7 years
      Hi again @Paulw11.. Could you please give me example? Sorry bit new to iphone development and swift.
  • VK321
    VK321 over 7 years
    Can you give me example on my code.. when i replace print message with completion(true, message) i get error.