Автоматизация создания аккаунтов в социальных сетях с помощью python3 и pyautogui - PullRequest
2 голосов
/ 09 февраля 2020

Привет всем, я работаю над проектом по автоматизации создания учетной записи в социальных сетях. Для этого у меня есть API, который предоставляет мне номер телефона и OTP. Так что в основном мой первый скрипт выбирает номер телефона и Otp из этого API, а второй - нажатие кнопок и заполнение форм. Моя проблема в том, что я не могу заполнить формы, потому что моя основная функция застряла в al oop, потому что я не отправляю никаких opp к этому API. Если у кого-нибудь есть предложения по интеграции этих двух скриптов, поделитесь со мной своей идеей. Я делюсь своими обоими сценариями. Заранее спасибо.

Это код для получения номера телефона и отп от API.

import requests
import json
import time


# This main function takes the value of tzid and call the api inbuild function to print the
# state of operation which has  {response: RESPONSE, service: SERVICE, number: NOMER, msg: ANSWER}

def main(tzid):

    result2 = requests.get("http://api.sms-reg.com/getState.php?tzid=" +tzid+ "&apikey=my_api_key")
    #time.sleep(20)
    xyz = result2.text
    y = json.loads(xyz)
    print(y)

    if(y["response"] != "TZ_NUM_PREPARE"):          #if response is not equal to "TZ_NUM_PREPARE"
        main(tzid)                                  #call the function again and again until we
                                                    #get response == "TZ_NUM_PREPARE"

    elif(y["response"] == "TZ_NUM_PREPARE"):
        print(y["number"])
        time.sleep(5)
        result3 =requests.get("http://api.sms-reg.com/setReady.php?tzid=" +tzid+ "&apikey=my_api_key")

        z = result3.text                            # result3 call api inbuilt setReady method which
        zx = json.loads(z)                          # tell api that the number is ready for operation
        print(z)


        if(zx["response"] == "1"):                  #if we get response 1 for result3 it means number is
            time.sleep(15)                          #now ready for operation

            result4 = requests.get("http://api.sms-reg.com/getState.php?tzid=" +tzid+ "&apikey=my_api_key")
            r_xyx = result4.text
            r_y = json.loads(r_xyx)                 #result4 is similar to result 2 , this process is repeated
                                                    #because we want updated data which contains OTP

            if(r_y["response"] != "TZ_NUM_ANSWER"):  #if the response does not contains OTP call the function
                main(tzid)                           #again and again

            else:
                #print(r_y["answer"])                #print otp
                print(r_y["answer"])








#Driver Code
if __name__ == "__main__":
    # result = requests.get send request to the api to fetch data
    # Basically it provides us two parameters "response" and "tzid"
    result = requests.get('http://api.sms-reg.com/getNum.php?country=ru&service=gmail&apikey=my_api_key')
    id = result.text                    #id fetch the data in text form
    x = json.loads(id)                  #x loads the text into json
    tzid = str(x["tzid"])               #variable tzid fetch the value from json
    #print(tzid)
    print(tzid)
    main(tzid)




И это код, где я хочу, чтобы мой номер телефона и отп

import pyautogui
import time
import pandas as pd
import requests
import json
import fetchapidata

df = pd.read_csv("input.csv")

df0 = df ["name1"]
df1 = df ["job"]
df2 = df ["name2"]
df3 = df ["name3"]
df4 = df ["name4"]

for i in range(1):
    #print(df0[i],df1[i])

 pyautogui.click(1308, 170)      #click on the small account logo

 time.sleep(5)

 pyautogui.click(1159, 527)      #clicks on the sign out button

 time.sleep(4)

 pyautogui.click(1270, 169)      #clicks on the sign in button

 time.sleep(4.5)

 pyautogui.click(620, 468)       #clicks on remove account

 time.sleep(2.5)

 pyautogui.click(888, 396)      #clicks on remove logo

 time.sleep(3.5)

 pyautogui.click(802, 528)     #clicks on yes remove


 #pyautogui.click(675, 422)          #add another account
 time.sleep(5)


 pyautogui.click(580, 601)         #create account

 time.sleep(6)

 pyautogui.click(594, 654)         #for myself

 time.sleep(4)

 pyautogui.click(450, 345)         #firstname

 pyautogui.write(df0[i],interval=0.5)

 time.sleep(2)

 pyautogui.click(641, 344)         #lastname

 pyautogui.write(df1[i],interval=0.5)

 time.sleep(1.5)

 pyautogui.click(453, 407)         #userid

 pyautogui.write(df2[i],interval=0.4)

 time.sleep(1.8)

 pyautogui.click(423, 515)        #password

 pyautogui.write(df3[i],interval=0.4)

 time.sleep(1.4)

 pyautogui.click(592, 516)       #cnfrm password

 pyautogui.write(df4[i],interval=0.6)

 time.sleep(0.5)

 pyautogui.click(706, 637)      #done button

 time.sleep(7)


 pyautogui.click(516, 452)                  #click on the phone no field

 time.sleep(3)


x = fetchapidata.callingfun()

pyautogui.write(y, interval=0.2)  #enters phone no

 time.sleep(1)

 pyautogui.click(705, 532)

 time.sleep(5)

 pyautogui.click(449, 480)            #clicks on otp box

 time.sleep(1.5)

 pyautogui.write(r_y, interval=0.2)          #enters otp

 time.sleep(1)

 pyautogui.click(710, 570)           #clicks verify button

 time.sleep(6)

 pyautogui.click(414, 580)           #clicks month section

 time.sleep(1)

 pyautogui.click(415, 359)           #selects the month

 time.sleep(0.5)

 pyautogui.click(533, 585)          #click on day section

 pyautogui.write("1")               #write day

 time.sleep(0.5)

 pyautogui.click(664, 585)          #clicks on year

 time.sleep(0.3)

 pyautogui.write("2000")            #write in year section

 time.sleep(0.2)

 pyautogui.click(423, 669)         #click on gender

 time.sleep(0.2)

 pyautogui.click(401, 735)                  #select gender

 time.sleep(1.5)

 pyautogui.scroll(-100)

 time.sleep(0.5)

 pyautogui.click(697, 638)                 #click on next button

 time.sleep(8)

 pyautogui.click(621, 618)                 #click on skip button

 pyautogui.moveTo(189, 589)

 time.sleep(0.1)

 pyautogui.scroll(-100)

 time.sleep(0.4)

 pyautogui.click(699, 642)                #click on agree button

 time.sleep(10)







1 Ответ

2 голосов
/ 14 февраля 2020

Импортируйте вашу программу в другую программу как модуль и вызывайте ваши функции в другой программе. Также разбейте вашу основную функцию на две части. Вызовите результаты 3 и 4 в другой функции и вызовите обе функции в другой программе.

...