Can a zero knowledge proof be faked through http? I'm working on a small blockchain project and I came across the idea of using zero knowledge proofs to enforce anonymity. I think I generally understand the idea, but I'm unable to find an explanation of a reliable way to implement this system with a protocol like HTTP. 

For example, given the classic sudoku example, where you have found the solution to the puzzle and want to prove to someone that you know the solution, without showing the solution, you can just create a mapping where you shuffle the numbers. Whenever the person asks for a row, you show them the row they asked for, with the valid numbers. 

My question is: If you are implementing this in HTTP and one server is trying to prove to the other that it knows the answer, when the verifier asks for a row via HTTP, cant the prover just provide a fake row of the numbers 1-9?  The prover would only need to generate a random combination of the numbers, making sure theyre all only used once, and the prover would deem this as valid.

I must be missing something here, but I fail to see how this could possibly be implemented between two servers. Any help would be tremendously appreciated
Yes, you are missing something. :)

The trick is that the prover commits to the number in each square individually.

The verifier doesn't always get a row, column or block. The verifier choses to see one of those or the permutation of the original puzzle.

If the verifier choses the permutation he can check if the revealed number are indeed a permutation of the original puzzle, if he choses a row or column he checks if all the numbers from one to nine are in it.

Since the prover does not know what is requested he has to commit to a valid filled Sudoku field to make sure that the numbers in each row, column and block are the numbers from one to nine. Since the permutation could be selected it must also be a solution to the initial problem.

Note that you have to repeat this process many times to get security because the prover could guess what the verifier will ask for. In every iteration a new puzzle must be chosen and the verifier must select which part to query independently at random.