Require visitor to fill a form to view contents
I don't have experience with the Webform module, but I think that you could create a rule to grant access to a referenced node when the user submits the form.

Basically, you need to add an entity reference field to the webform content type, reference the webform with the particular node, and create a rule that on the form submission event grants the current user access to the referenced node.
In Content Access and ACL, you should set the access per-node and per-user.

You'll need Entity reference, Webform, Rules, Webform Rules, Content Access and ACL modules.