A method for detecting device type spoofing, performed by at least one computer, the method comprising: receiving a communication from a client device different from the at least one computer; identifying from the communication an asserted type of the client device; and verifying the asserted type of the client device at least in part by: interacting with the client device to obtain additional information about the client device, wherein the interacting to obtain additional information comprises interacting with the client device to measure an amount of time it takes the client device to perform a task, wherein the interacting to measure an amount of time comprises: providing a software program to the client device for execution by the client device, wherein the providing comprises providing, to the client device, at least one input to the software program; measuring an amount of time it takes the client device to execute the software program, wherein the measuring comprises measuring how long it takes the client device to use the software to generate at least one output based on the at least one input; receiving the at least one output from the client device; and verifying that the at least one output is accurate; and determining whether the additional information about the client device is consistent with the asserted type of the client device; wherein the determining comprises determining whether the measured amount of time it takes the client device to perform the task is consistent with how long it takes client devices having the asserted type to perform the task. receiving a communication from a client device different from the at least one computer; identifying from the communication an asserted type of the client device; and verifying the asserted type of the client device at least in part by: interacting with the client device to obtain additional information about the client device, wherein the interacting to obtain additional information comprises interacting with the client device to measure an amount of time it takes the client device to perform a task, wherein the interacting to measure an amount of time comprises: providing a software program to the client device for execution by the client device, wherein the providing comprises providing, to the client device, at least one input to the software program; measuring an amount of time it takes the client device to execute the software program, wherein the measuring comprises measuring how long it takes the client device to use the software to generate at least one output based on the at least one input; receiving the at least one output from the client device; and verifying that the at least one output is accurate; and determining whether the additional information about the client device is consistent with the asserted type of the client device; providing a software program to the client device for execution by the client device, wherein the providing comprises providing, to the client device, at least one input to the software program; measuring an amount of time it takes the client device to execute the software program, wherein the measuring comprises measuring how long it takes the client device to use the software to generate at least one output based on the at least one input; receiving the at least one output from the client device; and verifying that the at least one output is accurate; and determining whether the additional information about the client device is consistent with the asserted type of the client device; wherein the determining comprises determining whether the measured amount of time it takes the client device to perform the task is consistent with how long it takes client devices having the asserted type to perform the task.