Sure. You can use a Flask app for this.
Create a Flask app and add a route of the initial link all visitors will have.
from flask import Flask, redirect
app = Flask(__name__)
@app.route('/my-redirecting-link')
def hello_world():
next_url = "http://www.example.com"
return redirect(next_url, code=302)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
And now improve the code above such that next_url is chosen dynamically. I would use SQLAlchemy and have a table with (url, used). Then you retrieve the first non-used link and redirect to it.
As for one user only being able to access 1 page (and not keep getting new pages), I would use a JWT or UUID4. What I would do is create a custom link for each person, and have the link include the token/password (this way the user does not even realise that is introducing a password). When the person clicks the link, you check which is the next unused redirect, redirect him, and mark the token as used. Then the user can either use the new link, or you can store a relation between tokens and which redirect link have they been assigned. This will work well; if you expect a lot of users and links (a large scale thing), then it would be interesting to consider methods which don't involve storing the relations to a db.
As for the IP, I would not choose that option (most of people have dynamic IPs, which change).