Getting vertex weights with the vertex proximity modifier
Use bpy.types.Object.to_mesh:


to_mesh(scene, apply_modifiers, settings, calc_tessface=True, calc_undeformed=False)

  
  Create a Mesh datablock with modifiers applied


This leaves your object unchanged and gives access to the modified vertex groups, e.g.

import bpy

mesh = bpy.context.object.to_mesh(bpy.context.scene, True, "PREVIEW")
for vertex in mesh.vertices:
    for group in vertex.groups:
        print(vertex, group, group.weight)