'Siri Proxy': A Proxy Server for Apple's Siri "assistant"

A St. Louis developer @plamoni has created "Siri Proxy" a proxy server that runs on his computer to make 'Siri' think it is talking to Apple's servers."Siri Proxy is a proxy server for Apple's Siri "assistant." The idea is to allow for the creation of custom handlers for different actions. This can allow developers to […]

A St. Louis developer @plamoni has created "Siri Proxy" a proxy server that runs on his computer to make 'Siri' think it is talking to Apple's servers.

"Siri Proxy is a proxy server for Apple's Siri "assistant." The idea is to allow for the creation of custom handlers for different actions. This can allow developers to easily add functionality to Siri.

The main example I provide is a plugin to control my thermostat with Siri. It responds to commands such as, "What's the status of the thermostat?", or "Set the thermostat to 68 degrees", or even 'What's the inside temperature?'," revealed @plamoni.

The proxy server acts as a middleman that intercepts Siri commands and returns answers. According to the project page, "the idea is to allow for the creation of custom handlers for different actions". It works by setting up a DNS server on your network to forward requests for guzzoni.apple.com (the Siri servers) to the computer running the proxy.

Set-up Instructions:

  1. Create a root CA using open SSL and have it issue a signed certificate for guzzoni.apple.com. Save the guzzoni private key (no passphrase) and certificate as "server.passless.key" and "server.passless.crt" in the SiriProxy directory. (fourth video above)
  2. Load the root CA's public certificate on your phone (you can just email it to yourself and click it to do that).
  3. Set up a DNS server on your network to forward requests for guzzoni.apple.com to the computer running the proxy (make sure that computer is not using your DNS server!). I recommend dnsmasq for this purpose. It's easy to get running and can easily handle this sort of behavior. (second video above)
  4. Install the requisite Ruby gems:
    • httparty
    • open-uri (you may not need this on newer versions of Ruby)
    • json
    • CFPropertyList
    • uuidtools
    • eventmachine
    • twitter (you can remove the require for the twitter plugin in start.rb if you don't want/have this gem)
  5. Execute start.rb (as root -- since it must listen on TCP/443)
  6. Activate Siri on your phone (connected to the network and using the DNS server with the fake entry), and say, "Test Siri proxy." It should respond, "Siri Proxy is up and running!"