D4rkC10ud

reger.au3 - AutoReger for Odnoklassniki

Jul 30th, 2012
990
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 11.60 KB | None | 0 0
  1. #include <ButtonConstants.au3>
  2. #include <EditConstants.au3>
  3. #include <GUIConstantsEx.au3>
  4. #include <StaticConstants.au3>
  5. #include <WindowsConstants.au3>
  6. #include <Array.au3>
  7. #include <IE.au3>
  8.  
  9. Global Enum $Parser_Nothing, $Parser_FirstName, $Parser_LastName, $Parser_Options, $Parser_NickNamePatterns, $Parser_eMailPatterns, $Parser_Cities
  10. Global $arrManFirstNames[1], $arrWomanFirstNames[1], $arrManLastNames[1], $arrWomanLastNames[1]
  11. Global $arrEMailPatterns[1], $arrNickNamePatterns[1], $arrCities[1], $iDateYearsFromTo
  12. Global $ODReg = GUICreate("OD Autoreger by D4rkC10ud", 202, 132, 192, 124)
  13. Global $SettingsBtn = GUICtrlCreateButton("settings of fake profile`s generator", 10, 10, 181, 21)
  14. Global $OutpBtn = GUICtrlCreateButton("Output file", 10, 40, 81, 21)
  15. $StartBtn = GUICtrlCreateButton("Start registration", 10, 100, 181, 21)
  16. Global $iAccsInp = GUICtrlCreateInput("", 130, 70, 61, 21)
  17. $Label1 = GUICtrlCreateLabel("Count of accs:", 10, 70, 113, 17)
  18. $sFileSettings = ""
  19. $sOutpSettings = ""
  20. GUISetState(@SW_SHOW)
  21.  
  22. Func _IEGetObjByClass(ByRef $o_object, $s_Class, $i_index = 0)
  23.     If Not IsObj($o_object) Then
  24.         __IEErrorNotify("Error", "_IEGetObjByClass", "$_IEStatus_InvalidDataType")
  25.         SetError($_IEStatus_InvalidDataType, 1)
  26.         Return 0
  27.     EndIf
  28.     ;
  29.     If Not __IEIsObjType($o_object, "browserdom") Then
  30.         __IEErrorNotify("Error", "_IEGetObjByClass", "$_IEStatus_InvalidObjectType")
  31.         SetError($_IEStatus_InvalidObjectType, 1)
  32.         Return 0
  33.     EndIf
  34.     ;
  35.     Local $i_found = 0
  36.     ;
  37.     $o_tags = _IETagNameAllGetCollection($o_object)
  38.     For $o_tag In $o_tags
  39.         If String($o_tag.className) = $s_Class Then
  40.             If ($i_found = $i_index) Then
  41.                 SetError($_IEStatus_Success)
  42.                 Return $o_tag
  43.             Else
  44.                 $i_found += 1
  45.             EndIf
  46.         EndIf
  47.     Next
  48.     ;
  49.     __IEErrorNotify("Warning", "_IEGetObjByClass", "$_IEStatus_NoMatch", $s_Class)
  50.     SetError($_IEStatus_NoMatch, 2)
  51.     Return 0
  52.  EndFunc
  53.  
  54. Func PatternToStr(ByRef $Person, $Pattern)
  55.    Local $Result = $Pattern
  56.    $Result = StringReplace($Result, "#LastName#", $Person[5], 0, 1)
  57.    $Result = StringReplace($Result, "#FirstName#", $Person[4], 0, 1)
  58.    $Result = StringReplace($Result, "#BirthdayDay#", String($Person[3]), 0, 1)
  59.    $Result = StringReplace($Result, "#BirthdayMonth#", String($Person[2]), 0, 1)
  60.    $Result = StringReplace($Result, "#BirthdayYear#", String($Person[1]), 0, 1)
  61.    While True
  62.    $Result = StringReplace($Result, "#RndNum#", Random(0, 9, 1))
  63.    If @extended = 0 Then ExitLoop
  64.    Wend
  65.    While True
  66.       $Result = StringReplace($Result, "#RndLatinChr#", Chr(Random(97, 122, 1)))
  67.       If @extended = 0 Then ExitLoop
  68.    Wend
  69.    Return $Result
  70. EndFunc
  71.  
  72. Func RandomEl(ByRef $arr)
  73.    Return $arr[Random(1, UBound($arr)-1, 1)]
  74. EndFunc
  75.  
  76. Func TranslitRus($sCyr)
  77.    Local $i, $s, $r
  78.    For $i=1 To StringLen($sCyr)
  79.    $s=StringMid($sCyr, $i, 1)
  80.    Select
  81.    Case $s="а"
  82.       $r=$r&"a";
  83.    Case $s="б"
  84.       $r=$r&"b";
  85.    Case $s="в"
  86.       $r=$r&"v";
  87.    Case $s="г"
  88.       $r=$r&"g";
  89.    Case $s="д"
  90.       $r=$r&"d";
  91.    Case $s="е"
  92.       $r=$r&"e";
  93.    Case $s="ё"
  94.       $r=$r&"jo";
  95.    Case $s="ж"
  96.       $r=$r&"zh";
  97.    Case $s="з"
  98.       $r=$r&"z";
  99.    Case $s="и"
  100.       $r=$r&"i";
  101.    Case $s="й"
  102.       $r=$r&"jj";
  103.    Case $s="к"
  104.       $r=$r&"k";
  105.    Case $s="л"
  106.       $r=$r&"l";
  107.    Case $s="м"
  108.       $r=$r&"m";
  109.    Case $s="н"
  110.       $r=$r&"n";
  111.    Case $s="о"
  112.       $r=$r&"o";
  113.    Case $s="п"
  114.       $r=$r&"p";
  115.    Case $s="р"
  116.       $r=$r&"r";
  117.    Case $s="с"
  118.       $r=$r&"s";
  119.    Case $s="т"
  120.       $r=$r&"t";
  121.    Case $s="у"
  122.       $r=$r&"u";
  123.    Case $s="ф"
  124.       $r=$r&"f";
  125.    Case $s="х"
  126.       $r=$r&"kh";
  127.    Case $s="ц"
  128.       $r=$r&"c";
  129.    Case $s="ч"
  130.       $r=$r&"ch";
  131.    Case $s="ш"
  132.       $r=$r&"sh";
  133.    Case $s="щ"
  134.       $r=$r&"shh";
  135.    Case $s="ь"
  136.    Case $s="ы"
  137.        $r=$r&"y";
  138.    Case $s="ъ"
  139.    Case $s="э"
  140.       $r=$r&"eh";
  141.    Case $s="ю"
  142.       $r=$r&"ju";
  143.    Case $s="я"
  144.       $r=$r&"ja";
  145.    Case Else
  146.       $r=$r&$s;
  147.    EndSelect
  148. Next
  149.    Return $r
  150. EndFunc
  151.  
  152. Func ParseProfileSettings($sProfile)
  153. Local $iParserStatus, $fileProfile, $sCurLine
  154. $fileProfile=FileOpen($sProfile)
  155. If $fileProfile=-1 Then Return False
  156. While True
  157.       $sCurLine=FileReadLine($fileProfile)
  158.    If (@error=-1) Then ExitLoop
  159.       $sCurLine=StringStripWS($sCurLine, 3)
  160.    If ($sCurLine="") Or (StringMid($sCurLine, 1, 1)=";") Then
  161.       ContinueLoop
  162.    ElseIf $sCurLine="[Born]" Then
  163.       $iParserStatus = $Parser_Options
  164.       ContinueLoop
  165.    ElseIf $sCurLine="[LastNames]" Then
  166.       $iParserStatus = $Parser_LastName
  167.       ContinueLoop
  168.    ElseIf $sCurLine="[FirstNames]" Then
  169.       $iParserStatus = $Parser_FirstName
  170.       ContinueLoop
  171.    ElseIf $sCurLine="[PatternsNickname]" Then
  172.       $iParserStatus = $Parser_NickNamePatterns
  173.       ContinueLoop
  174.    ElseIf $sCurLine="[PatternsEmail]" Then
  175.       $iParserStatus = $Parser_eMailPatterns
  176.       ContinueLoop
  177.    ElseIf $sCurLine="[Cities]" Then
  178.       $iParserStatus = $Parser_Cities
  179.    EndIf  
  180.    If $iParserStatus=$Parser_Options Then
  181.       $Option=StringSplit($sCurLine, "=")
  182.       If $Option[0]<>2 Then Return False
  183.          If $Option[1]="Years" Then
  184.             $iDateYearsFromTo=StringSplit($Option[2], "-")
  185.             If $iDateYearsFromTo[0] <>2 Then Return False
  186.             _ArrayDelete($iDateYearsFromTo, 0)
  187.          EndIf
  188.    ElseIf $iParserStatus=$Parser_FirstName Then
  189.         $NameNSex = StringSplit($sCurLine, ":")
  190.         If $NameNSex[0]<>2 Then Return False
  191.         If StringInStr($NameNSex[2], "M")<>0 Then _ArrayAdd($arrManFirstNames, $NameNSex[1])
  192.         If StringInStr($NameNSex[2], "F")<>0 Then _ArrayAdd($arrWomanFirstNames, $NameNSex[1])   
  193.    ElseIf $iParserStatus=$Parser_LastName Then
  194.         $NameNSex = StringSplit($sCurLine, ":")
  195.         If $NameNSex[0]<>2 Then Return False
  196.         If StringInStr($NameNSex[2], "M")<>0 Then _ArrayAdd($arrManLastNames, $NameNSex[1])
  197.         If StringInStr($NameNSex[2], "F")<>0 Then _ArrayAdd($arrWomanLastNames, $NameNSex[1])    
  198.    ElseIf $iParserStatus=$Parser_NickNamePatterns Then
  199.       _ArrayAdd($arrNickNamePatterns, $sCurLine)
  200.    ElseIf $iParserStatus=$Parser_eMailPatterns Then
  201.       _ArrayAdd($arrEMailPatterns, $sCurLine)
  202.    ElseIf $iParserStatus=$Parser_Cities Then
  203.       _ArrayAdd($arrCities, $sCurLine)
  204.    EndIf
  205. WEnd
  206. Return True
  207. EndFunc
  208.  
  209. Func GeneratePerson()
  210.    Local $Result[10]
  211.    $Result[0]=Random(0, 1, 1) ;Sex
  212.    $Result[1]=Random($iDateYearsFromTo[0], $iDateYearsFromTo[1], 1)-1900 ;Year`s born
  213.    $Result[2]=Random(1, 12, 1) ; Month
  214.    $Result[3]=Random(1, 28, 1) ; Day
  215.    If $Result[0]=0 Then
  216.       $Result[4]=RandomEl($arrWomanFirstNames) ; First Name
  217.       $Result[5]=RandomEl($arrWomanLastNames)  ; Last Name
  218.    Else
  219.       $Result[4]=RandomEl($arrManFirstNames) ; First Name
  220.       $Result[5]=RandomEl($arrManLastNames)  ; Last Name     
  221.    EndIf
  222.    $Result[6]=TranslitRus(PatternToStr($Result, RandomEl($arrNickNamePatterns))) ;NickName
  223.    $Result[7]=TranslitRus(PatternToStr($Result, RandomEl($arrEMailPatterns))) ;e-mail
  224.    $Result[9]=GenPass(14)
  225.    $Result[8]=RandomEl($arrCities) ;City
  226.    Return $Result
  227. EndFunc
  228.  
  229. Func GenPass($iLen)
  230.    Local $char, $i, $Result=""
  231.    For $i=1 to $iLen
  232.       $char=Random(0, 61, 1)
  233.       If $char<10 Then
  234.          $Result=$Result&Chr($char+48)
  235.       ElseIf ($char>9) And ($char<36) Then
  236.          $Result=$Result&Chr($char+55)
  237.       Else
  238.          $Result=$Result&Chr($char+61)
  239.       EndIf
  240.    Next
  241.    Return $Result
  242. EndFunc
  243.  
  244. Func RegAccs($sSettings, $sOutp)
  245.    Local $arrPerson, $oLogin, $oIE
  246.    If $sSettings = "" Then
  247.       MsgBox(16, "Error", "Please, choice settings of fake profile`s generator")
  248.       Return
  249.    EndIf  
  250.    If $sOutp = "" Then
  251.       MsgBox(16, "Error", "Please, choice output file")
  252.       Return
  253.    EndIf  
  254.    If ParseProfileSettings($sSettings) = False Then
  255.       MsgBox(16, "Error", "Invalid settings format!")
  256.       Return
  257.    EndIf
  258.    $iAccs=Int(GUICtrlRead($iAccsInp))
  259.    If (($iAccs<1) or ($iAccs>100)) Then
  260.       MsgBox(16, "Error", "Invalid count of accounts!")
  261.       Return     
  262.    EndIf
  263.    $oIE=_IECreate("", 0, 0)
  264.    $fAccsXML=FileOpen($sOutp, 258)
  265.    FileWrite($fAccsXML, '<?xml version="1.0" encoding="UTF-8"?>'&@CRLF&'<ACCOUNTS>'&@CRLF)
  266.    For $i=1 to $iAccs
  267.       _IENavigate($oIE, "http://www.odnoklassniki.ru/")
  268.       $oForm = _IEFormGetCollection($oIE, 1)
  269.       _IEFormSubmit($oForm)
  270.       $arrPerson = GeneratePerson()
  271.       $oForm=_IEFormGetCollection($oIE, 0)
  272.       $oEl=_IEFormElementGetObjByName($oForm, "fr.name")
  273.       _IEFormElementSetValue($oEl, $arrPerson[4])
  274.       $oEl=_IEFormElementGetObjByName($oForm, "fr.surname")
  275.       _IEFormElementSetValue($oEl, $arrPerson[5])
  276.       $oEl=_IEFormElementGetObjByName($oForm, "fr.email")
  277.       _IEFormElementSetValue($oEl, $arrPerson[7])
  278.       $oEl=_IEFormElementGetObjByName($oForm, "fr.city")
  279.       _IEFormElementSetValue($oEl, $arrPerson[8])
  280.       $oEl=_IEFormElementGetObjByName($oForm, "fr.lgn")
  281.       _IEFormElementSetValue($oEl, $arrPerson[6])
  282.       $oEl=_IEFormElementGetObjByName($oForm, "fr.rpassword")
  283.       _IEFormElementSetValue($oEl, $arrPerson[9])
  284.       $oEl=_IEFormElementGetObjByName($oForm, "fr.rpassword2")
  285.       _IEFormElementSetValue($oEl, $arrPerson[9])
  286.       $oEl=_IEFormElementGetObjByName($oForm, "fr.bday")
  287.       _IEFormElementOptionSelect($oEl, 0, 1, "byIndex")
  288.       $oEl=_IEFormElementGetObjByName($oForm, "fr.country")
  289.       _IEFormElementOptionSelect($oEl, 0, 1, "byIndex")
  290.       $oEl=_IEFormElementGetObjByName($oForm, "fr.bday")
  291.       _IEFormElementOptionSelect($oEl, $arrPerson[3], 1, "byIndex")  
  292.       $oEl=_IEFormElementGetObjByName($oForm, "fr.bmonth")
  293.       _IEFormElementOptionSelect($oEl, $arrPerson[2], 1, "byIndex")  
  294.       $oEl=_IEFormElementGetObjByName($oForm, "fr.byear")
  295.       _IEFormElementOptionSelect($oEl, (107-$arrPerson[1]), 1, "byIndex")
  296.       _IEFormElementRadioSelect($oForm, String(2-$arrPerson[0]), "fr.gender")  
  297.       _IEFormSubmit($oForm)
  298.       $oLogout = _IEGetObjByClass($oIE, "portal-headline__login__link", 1)
  299.       If ($oLogout<>0) Then
  300.          _IEAction($oLogout, "click")
  301.          _IELoadWait($oIE, 3000)
  302.          $oForms=_IEFormGetCollection($oIE)
  303.          For $oForm In $oForms
  304.             If StringInStr($oForm.action, "/dk?cmd=PopLayerLogoffUser")<>0 Then
  305.                $oLogoffBtn=_IEFormElementGetCollection($oForm, 1)
  306.                _IELoadWait($oIE, 5000)             
  307.                _IEAction($oLogoffBtn, "click")
  308.                _IELoadWait($oIE, 5000)             
  309.                ExitLoop
  310.             EndIf
  311.          Next
  312.       Else
  313.          ContinueLoop
  314.       EndIf
  315.       FileWrite($fAccsXML, "<ACCOUNT>"&@CRLF&"<BIRTHDAY>"&@CRLF&"<YEAR>"&String($arrPerson[1])&"</YEAR>"&@CRLF)
  316.       FileWrite($fAccsXML, "<MONTH>"&String($arrPerson[2])&"</MONTH>"&@CRLF)
  317.       FileWrite($fAccsXML, "<DAY>"&String($arrPerson[3])&"</DAY>"&@CRLF&"</BIRTHDAY>"&@CRLF)
  318.       FileWrite($fAccsXML, "<LOGIN><![CDATA["&String($arrPerson[6])&"]]></LOGIN>"&@CRLF)
  319.       FileWrite($fAccsXML, "<PASSWORD><![CDATA["&$arrPerson[9]&"]]></PASSWORD>"&@CRLF)
  320.       FileWrite($fAccsXML, "<FIRSTNAME><![CDATA["&$arrPerson[4]&"]]></FIRSTNAME>"&@CRLF)
  321.       FileWrite($fAccsXML, "<LASTNAME><![CDATA["&$arrPerson[5]&"]]></LASTNAME>"&@CRLF)
  322.       FileWrite($fAccsXML, "<EMAIL><![CDATA["&$arrPerson[7]&"]]></EMAIL>"&@CRLF)
  323.       FileWrite($fAccsXML, "<CITY><![CDATA["&$arrPerson[8]&"]]></CITY>"&@CRLF)
  324.       FileWrite($fAccsXML, "<SEX>"&String($arrPerson[0])&"</SEX>"&@CRLF)
  325.       FileWrite($fAccsXML, "</ACCOUNT>"&@CRLF)
  326.    Next
  327.    FileWrite($fAccsXML, '</ACCOUNTS>'&@CRLF)
  328.    FileClose($fAccsXML)
  329.    MsgBox(0, "Done", "Work is done!")
  330. EndFunc
  331.  
  332. While 1
  333.    $nMsg = GUIGetMsg()
  334.    Switch $nMsg
  335.       Case $GUI_EVENT_CLOSE
  336.          Exit
  337.       Case $SettingsBtn
  338.          $sFileSettings = FileOpenDialog("settings of fake profile`s generator", ".", "Text files (*.txt)|All (*.*)")
  339.       Case $OutpBtn
  340.          $sOutpSettings = FileSaveDialog("Save output as..", ".", "XML file (*.xml)|All (*.*)", 0, "accs.xml")
  341.       Case $StartBtn
  342.          RegAccs($sFileSettings, $sOutpSettings)
  343.    EndSwitch
  344. WEnd
Advertisement
Add Comment
Please, Sign In to add comment