Untitled
unknown
python
2 years ago
18 kB
15
Indexable
def register(proxy): url = f"https://reddit.com/register" proxy = proxy['proxy'] password = passgen.passgen() # try: # data = kopeechka_body.mailbox_get_email(site="reddit.com", # mail_type="hotmail.com", # sender="noreply@reddit.com") # email_address = data.mail # task_id = data.id # print(email_address) # except Exception as e: # print(e) # return False random_string = ''.join(random.choices(string.ascii_letters, k=random.randint(4, 6))) random_string += ''.join(random.choices(string.digits, k=random.randint(3, 5))) email_address = f"{random_string}@gmail.com" # while True: # username = f"{random.choice(adjectives).capitalize()}_{random.choice(nouns).capitalize()}_{int(random.randint(20, 700))}" # if 7 < len(username) < 20: # break # print(username) print(f"Email address is: {email_address}") headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36" } release_ip(proxy={"proxy": proxy}) session = requests.Session() session.headers = headers session.verify = False session.proxies = { "http": f"http://{proxy}", "https": f"http://{proxy}" } try: for _ in range(3): try: response = session.get(url) break except Exception as e: pass # print(f"Getting registration page: {response.status_code}") soup = bs(response.content, "lxml") token = soup.findAll('input')[1]['value'] # GETTING USERNAMES for _ in range(3): try: response = session.get('https://www.reddit.com/api/v1/generate_username.json') break except Exception as e: pass username = random.choice(response.json()['usernames']) print(f"Username is: {username}") g_response = configure_captcha(site_url=site_url, site_key=reddit_site_key) if token is None: session.close() print(f"Failed to get token.") return False if g_response != 0: session.headers.update({ 'authority': 'www.reddit.com', 'accept': '*/*', 'accept-language': 'en-US,en;q=0.9', 'content-type': 'application/x-www-form-urlencoded', 'origin': 'https://www.reddit.com', 'referer': 'https://www.reddit.com/register/', 'sec-ch-ua': '"Google Chrome";v="113", "Chromium";v="113", "Not-A.Brand";v="24"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-origin', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36', }) data = { 'csrf_token': f'{token}', 'g-recaptcha-response': f'{g_response}', 'password': f'{password}', 'dest': 'https://www.reddit.com', 'email_permission': 'false', 'lang': 'en-US', 'username': f'{username}', 'email': f'{email_address}', } # registering for _ in range(4): try: response = session.post('https://www.reddit.com/register', data=data) break except Exception as e: pass # session.close() print(f"Registering response: {response.status_code}") if response.status_code != 200: print(response.content) if response.status_code == 200: today = datetime.strftime(datetime.today(), "%Y-%m-%d") created_accounts.insert_one({ 'username': username, 'password': password, 'email': email_address, 'age': today, 'verified': False, 'requests': True }) session, loid, bearer = get_loid_and_bearer_from_url(url="https://reddit.com", session=session) session.headers = {} session.headers = { 'authority': 'gql.reddit.com', 'accept': '*/*', 'accept-language': 'en-US,en;q=0.9', 'content-type': 'application/json', 'authorization': f'Bearer {bearer}', 'origin': 'https://www.reddit.com', 'referer': 'https://www.reddit.com/', 'sec-ch-ua': '"Google Chrome";v="113", "Chromium";v="113", "Not-A.Brand";v="24"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-site', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36', 'x-reddit-compression': '1', 'x-reddit-loid': f'{loid}', } json_data = { 'id': '670e8e8d3018', 'variables': { 'input': { 'customGender': None, 'genderEnum': 'FEMALE', }, }, } for _ in range(4): try: response = session.post('https://gql.reddit.com/', json=json_data) break except Exception as e: pass # print(f"Sending gender response: {response.status_code}") if response.status_code != 200: print(response.content) session.close() quit(0) # GETTING THE INTERESTS json_data = { 'id': '7637265b3b63', 'variables': { 'first': 500, 'maxChildren': 500, 'maxDepth': 2, 'schemeName': 'topic_chaining_icons', 'onboardingFlow': 'ONBOARDING', }, } for _ in range(4): try: response = session.post('https://gql.reddit.com/', json=json_data) break except Exception as e: pass # print(f"Getting interests response: {response.status_code}") session.headers = {} session.headers = { 'authority': 'gql.reddit.com', 'accept': '*/*', 'accept-language': 'en-US,en;q=0.9', 'authorization': f'Bearer {bearer}', 'content-type': 'application/json', 'origin': 'https://www.reddit.com', 'referer': 'https://www.reddit.com/', 'sec-ch-ua': '"Google Chrome";v="113", "Chromium";v="113", "Not-A.Brand";v="24"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-site', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36', 'x-reddit-compression': '1', 'x-reddit-loid': f'{loid}', } # TODO: parse the interests and pick randomly. response_str = response.content.decode('utf-8') json_data = json.loads(response_str) edges = json_data['data']['interestTopics']['edges'] random.shuffle(edges) interest_blocks = edges[:5] random_interests = [] for one in interest_blocks: interest = one['node']['id'] random_interests.append(interest) # print(f"My interests: {random_interests}") json_data = { 'id': 'c79807b42f04', 'variables': { 'topicIds': random_interests, 'schemeName': 'topic_chaining_icons', 'maxSubreddits': 10, 'onboardingFlow': 'ONBOARDING', }, } for _ in range(4): try: response = session.post('https://gql.reddit.com/', json=json_data) break except Exception as e: pass # print(f"Sending interests response: {response.status_code}") # if response.status_code != 200: # # print(response.content) # print(f"interests response: {response.content}") # TODO: the content of the response here has the subreddits. # TODO: get the subreddits after sending the interests. response_str = response.content.decode('utf-8') json_data = json.loads(response_str) topics = json_data['data']['interestTopicsByIds']['edges'] random.shuffle(edges) random_subs = [] for one in topics: subreddits = one['node']['topic']['subreddits']['edges'] random.shuffle(subreddits) random_sub = subreddits[0]['node']['id'] random_subs.append(random_sub) my_chosen_subs = ",".join(random_subs) # print(my_chosen_subs) sleep(random.randint(4, 8)) session.headers = {} session.headers = { 'authority': 'oauth.reddit.com', 'accept': '*/*', 'accept-language': 'en-US,en;q=0.9', 'authorization': f'Bearer {bearer}', 'content-type': 'application/x-www-form-urlencoded', 'origin': 'https://www.reddit.com', 'referer': 'https://www.reddit.com/', 'sec-ch-ua': '"Google Chrome";v="113", "Chromium";v="113", "Not-A.Brand";v="24"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-site', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36', 'x-reddit-loid': f'{loid}' } params = { 'redditWebClient': 'desktop2x', 'app': 'desktop2x-client-production', 'raw_json': '1', 'gilding_detail': '1', } data = { 'action': 'sub', 'sr': f'{my_chosen_subs}', 'api_type': 'json', } for _ in range(4): try: response = session.post('https://oauth.reddit.com/api/subscribe', params=params, data=data) break except Exception as e: pass # print(f"Sending subreddits response: {response.status_code}") print(f"Username: {username} - Password: {password}") sleep(random.randint(4, 8)) # session.headers = {} # # # GETTING A RANDOM AVATAR # session.headers = { # 'authority': 'snoovatar.reddit.com', # 'accept': '*/*', # 'accept-language': 'en-US,en;q=0.9', # 'authorization': f'Bearer {bearer}', # 'content-type': 'application/x-www-form-urlencoded', # 'origin': 'https://www.reddit.com', # 'referer': 'https://www.reddit.com/', # 'sec-ch-ua': '"Google Chrome";v="113", "Chromium";v="113", "Not-A.Brand";v="24"', # 'sec-ch-ua-mobile': '?0', # 'sec-ch-ua-platform': '"Windows"', # 'sec-fetch-dest': 'empty', # 'sec-fetch-mode': 'cors', # 'sec-fetch-site': 'same-site', # 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36', # 'x-reddit-loid': f'{loid}' # } # # response = session.get('https://snoovatar.reddit.com/api/snoovatars/random:byId') # # print(f"Getting a random avatar response: {response.status_code}") # # print(f"avatar response: {response.content}") # # sleep(random.randint(4, 7)) # # content = response.json() # items = content['accessory_ids'] # print(f"Avatar Items: {items}") # session.headers = {} # session.headers = { # 'authority': 'snoovatar.reddit.com', # 'accept': '*/*', # 'accept-language': 'en-US,en;q=0.9', # 'access-control-request-headers': 'authorization,content-type,x-csrf-token,x-reddit-loid,x-reddit-session', # 'access-control-request-method': 'POST', # 'origin': 'https://www.reddit.com', # 'referer': 'https://www.reddit.com/', # 'sec-fetch-dest': 'empty', # 'sec-fetch-mode': 'cors', # 'sec-fetch-site': 'same-site', # 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36', # } # # params = { # 'skip_telemetry': 'true', # } # # response = session.options('https://snoovatar.reddit.com/api/snoovatar', params=params) # # print(f"Sending avatar options response: {response.status_code}") # session_tracker = "" # # for one in session.cookies.items(): # name = one[0].lower() # value = one[1] # # if name == "session_tracker": # session_tracker = value # print(f"My session tracker is: {session_tracker}") # session.headers = {} # session.headers = { # 'authority': 'snoovatar.reddit.com', # 'accept': '*/*', # 'accept-language': 'en-US,en;q=0.9', # 'authorization': f'Bearer {bearer}', # 'content-type': 'application/json', # 'origin': 'https://www.reddit.com', # 'referer': 'https://www.reddit.com/', # 'sec-ch-ua': '"Google Chrome";v="113", "Chromium";v="113", "Not-A.Brand";v="24"', # 'sec-ch-ua-mobile': '?0', # 'sec-ch-ua-platform': '"Windows"', # 'sec-fetch-dest': 'empty', # 'sec-fetch-mode': 'cors', # 'sec-fetch-site': 'same-site', # 'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", # 'x-csrf-token': f'{token}', # 'x-reddit-loid': f'{loid}' # } # # params = { # 'skip_telemetry': 'true', # } # # json_data = OrderedDict([ # ('accessory_ids', items), # ('styles', {}), # ('set_avatar_to_profile', True), # ('source', 'web_onboarding') # ]) # # # print(json_data) # # response = session.post('https://snoovatar.reddit.com/api/snoovatar', params=params, json=json_data) # # print(f"Choosing avatar response: {response.status_code}") # print(f"{response.content}") # verify_with_kopeechka( # username=username, # session=session, # task_id=task_id, # proxy_address=proxy) session.close() release_ip(proxy={"proxy": proxy}) return True else: print(response.content) session.close() return False except Exception as e: print(e) session.close()
Editor is loading...