aW1wb3J0IHN0cmluZwppbXBvcnQgcmVxdWVzdHMKaW1wb3J0IGl0ZXJ0b29scwoKZGVmIGdlbmVyYXRlX2xpbmtzKGJhc2VfbGluayk6CiAgICAmcXVvdDsmcXVvdDsmcXVvdDsKICAgIEdlbmVyYXRlcyBhbGwgcG9zc2libGUgY29tYmluYXRpb25zIGJ5IHJlcGxhY2luZyAneCcgd2l0aCBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4KICAgICZxdW90OyZxdW90OyZxdW90OwogICAgY2hhcnMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMKICAgIHhfY291bnQgPSBiYXNlX2xpbmsuY291bnQoJ3gnKQogICAgCiAgICAjIEdlbmVyYXRlIGNvbWJpbmF0aW9ucyBmb3IgJ3gnIHBvc2l0aW9ucwogICAgZm9yIHJlcGxhY2VtZW50cyBpbiBpdGVydG9vbHMucHJvZHVjdChjaGFycywgcmVwZWF0PXhfY291bnQpOgogICAgICAgIG5ld19saW5rID0gYmFzZV9saW5rCiAgICAgICAgZm9yIGNoYXIgaW4gcmVwbGFjZW1lbnRzOgogICAgICAgICAgICBuZXdfbGluayA9IG5ld19saW5rLnJlcGxhY2UoJ3gnLCBjaGFyLCAxKQogICAgICAgIHlpZWxkIG5ld19saW5rCgpkZWYgaXNfdmFsaWRfbGluayhsaW5rKToKICAgICZxdW90OyZxdW90OyZxdW90OwogICAgQ2hlY2tzIGlmIHRoZSBnaXZlbiBsaW5rIGlzIHZhbGlkIGJ5IHNlbmRpbmcgYSByZXF1ZXN0LgogICAgJnF1b3Q7JnF1b3Q7JnF1b3Q7CiAgICB0cnk6CiAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0cy5oZWFkKGxpbmssIGFsbG93X3JlZGlyZWN0cz1UcnVlLCB0aW1lb3V0PTUpCiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnN0YXR1c19jb2RlID09IDIwMAogICAgZXhjZXB0IHJlcXVlc3RzLlJlcXVlc3RFeGNlcHRpb246CiAgICAgICAgcmV0dXJuIEZhbHNlCgpkZWYgZmluZF92YWxpZF9saW5rKGJhc2VfbGluayk6CiAgICAmcXVvdDsmcXVvdDsmcXVvdDsKICAgIEl0ZXJhdGVzIHRocm91Z2ggcG9zc2libGUgbGlua3MgYW5kIGZpbmRzIGEgdmFsaWQgb25lLgogICAgJnF1b3Q7JnF1b3Q7JnF1b3Q7CiAgICBmb3IgbGluayBpbiBnZW5lcmF0ZV9saW5rcyhiYXNlX2xpbmspOgogICAgICAgIGlmIGlzX3ZhbGlkX2xpbmsobGluayk6CiAgICAgICAgICAgIHJldHVybiBsaW5rCiAgICByZXR1cm4gTm9uZQoKaWYgX19uYW1lX18gPT0gJnF1b3Q7X19tYWluX18mcXVvdDs6CiAgICAjIElucHV0IGxpbmsgd2l0aCAneCcgYXMgcGxhY2Vob2xkZXJzCiAgICBiYXNlX2xpbmsgPSBpbnB1dCgmcXVvdDtFbnRlciB0aGUgYmFzZSBsaW5rIHdpdGggJ3gnIGFzIHBsYWNlaG9sZGVycyAoZS5nLiwgaHR0cHM6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5hLm56L2ZvbGRlci9abnN4U3h4WSk6ICZxdW90Oykuc3RyaXAoKQogICAgCiAgICBwcmludCgmcXVvdDtTZWFyY2hpbmcgZm9yIGEgdmFsaWQgbGluay4uLiZxdW90OykKICAgIHZhbGlkX2xpbmsgPSBmaW5kX3ZhbGlkX2xpbmsoYmFzZV9saW5rKQogICAgCiAgICBpZiB2YWxpZF9saW5rOgogICAgICAgIHByaW50KGYmcXVvdDtWYWxpZCBsaW5rIGZvdW5kOiB7dmFsaWRfbGlua30mcXVvdDspCiAgICBlbHNlOgogICAgICAgIHByaW50KCZxdW90O05vIHZhbGlkIGxpbmsgZm91bmQuJnF1b3Q7KQo=
import string
import requests
import itertools
def generate_links(base_link):
"""
Generates all possible combinations by replacing 'x' with alphanumeric characters.
"""
chars = string.ascii_letters + string.digits
x_count = base_link.count('x')
# Generate combinations for 'x' positions
for replacements in itertools.product(chars, repeat=x_count):
new_link = base_link
for char in replacements:
new_link = new_link.replace('x', char, 1)
yield new_link
def is_valid_link(link):
"""
Checks if the given link is valid by sending a request.
"""
try:
response = requests.head(link, allow_redirects=True, timeout=5)
return response.status_code == 200
except requests.RequestException:
return False
def find_valid_link(base_link):
"""
Iterates through possible links and finds a valid one.
"""
for link in generate_links(base_link):
if is_valid_link(link):
return link
return None
if __name__ == "__main__":
# Input link with 'x' as placeholders
base_link = input("Enter the base link with 'x' as placeholders (e.g., https://m...content-available-to-author-only...a.nz/folder/ZnsxSxxY): ").strip()
print("Searching for a valid link...")
valid_link = find_valid_link(base_link)
if valid_link:
print(f"Valid link found: {valid_link}")
else:
print("No valid link found.")