Random rand = new Random();
lock(SyncObjects.ListSyncer)
{ var list = project.Lists["proxy"];
project.Variables["proxy"].Value = list[0];
list.RemoveAt(0);
list.Add(project.Variables["proxy"].Value);}
instance.SetWindowSize(1280,1024);
instance.SetProxy(project.Variables["proxy"].Value);
instance.AllowPopUp = false;
instance.UseCSS = false;
instance.DownloadFrame = false;
instance.LoadPictures = false;
instance.UseAdds = false;
lock(SyncObjects.ListSyncer)
{ var list = project.Lists["veryGood"];
project.Variables["NUrl"].Value = list[0];
list.RemoveAt(0);
list.Add(project.Variables["NUrl"].Value);
}
string NUrl = project.Variables["NUrl"].Value;
List<char> nu = NUrl.ToArray()
.ToList();
int N = int.Parse(
nu.Where(
c=>nu.IndexOf(c)<nu.IndexOf('|')
).First(
).ToString()
);
string url = nu.Where(
c=>nu.IndexOf(c)>nu.IndexOf('|')
)
.Aggregate("",(bef,af)=>bef.ToString()+af.ToString());
var tab = instance.ActiveTab;
string http = url.Substring(0, 4);
if(http=="http"){
string domain = new Uri(url).Host;
var domains = new []{domain};
instance.SetContentPolicy("WhiteList", domains, null);
}
else{
int offset=url.IndexOf("/",0);
string domain= url.Substring(0,offset+1);
}
project.Variables["url"].Value = url;
tab.Navigate(url);
System.Threading.Thread.Sleep(500);
tab.WaitDownloading();
HtmlElement hes = instance.ActiveTab.FindElementByTag("form",N);
var k = 0;
while (hes.IsVoid && k < 15) {
System.Threading.Thread.Sleep(rand.Next(500, 1000));
hes = instance.ActiveTab.FindElementByTag("form",N);
k++;
}
if (hes.IsVoid) throw new Exception("За 15 попыток не смогли найти необходимую форму!");
int code = rand.Next(900,999); int num = rand.Next(000,999); int num2 = rand.Next(0,99);int num3 = rand.Next(0,99);
int countrycode = rand.Next(0,999);
project.Variables["phone"].Value = countrycode + code.ToString() + num.ToString() + num2.ToString() + num3.ToString();
string text = project.ExecuteMacro(project.Variables["spintax_mess"].Value);
project.Variables["message"].Value = Macros.TextProcessing.Spintax(text, false);
lock(SyncObjects.ListSyncer)
{
var list = project.Lists["domain"];
project.Variables["domain"].Value = list[0];
list.RemoveAt(0);
list.Add(project.Variables["domain"].Value);
int count = rand.Next(5, 30);
string rand_link = string.Empty;
int r;
char[] chars = "abcdefghijklmnopqrstuvwxyz0123456789".ToCharArray();
for (int j = 0; j < count; j++) {
r = rand.Next(chars.Length);
rand_link += chars[r];
}
project.Variables["link"].Value = project.Variables["domain"].Value + "/" + rand_link;
}
string link = project.Variables["link"].Value;
project.Variables["message"].Value = project.Variables["message"].Value.Replace("URL", link);
text = project.ExecuteMacro(project.Variables["spintax_subj"].Value);
project.Variables["subject"].Value = Macros.TextProcessing.Spintax(text, false);
lock(SyncObjects.ListSyncer)
{
int number = rand.Next(1, 3);
string fio;
if (number == 1 ) {
number = rand.Next(0, project.Lists["muj_fam"].Count - 1);
var muj_fam = project.Lists["muj_fam"][number];
number = rand.Next(0, project.Lists["muj_imya"].Count - 1);
var muj_imya = project.Lists["muj_imya"][number];
number = rand.Next(0, project.Lists["muj_otch"].Count - 1);
var muj_otch = project.Lists["muj_otch"][number];
project.Variables["fio"].Value = muj_fam + " " + muj_imya + " " + muj_otch;
}
else{
number = rand.Next(0, project.Lists["jen_fam"].Count - 1);
var jen_fam = project.Lists["jen_fam"][number];
number = rand.Next(0, project.Lists["jen_imya"].Count - 1);
var jen_imya = project.Lists["jen_imya"][number];
number = rand.Next(0, project.Lists["jen_otch"].Count - 1);
var jen_otch = project.Lists["jen_otch"][number];
project.Variables["fio"].Value = jen_fam + " " + jen_imya + " " + jen_otch;
}
}
lock(SyncObjects.ListSyncer)
{
var list = project.Lists["email"];
project.Variables["email"].Value = list[0];
list.RemoveAt(0);
list.Add(project.Variables["email"].Value);
}
lock(SyncObjects.ListSyncer)
{
var list = project.Lists["mess"];
project.Variables["message"].Value = list[0];
list.RemoveAt(0);
string mess = project.Variables["message"].Value;
list.Add(mess);
project.Variables["message"].Value = project.Variables["message"].Value.Replace("URL", link);
}
lock(SyncObjects.ListSyncer)
{
var list = project.Lists["subj"];
project.Variables["subject"].Value = list[0];
list.RemoveAt(0);
string subject = project.Variables["subject"].Value;
list.Add(subject);
}
string name = project.Variables["email"].Value;
string phone = project.Variables["phone"].Value;
string mail = project.Variables["email"].Value;
string message = project.Variables["message"].Value;
string subj= project.Variables["subject"].Value;
string isName = "(?i)(name|имя)";
string isPhone="(?i)(tel|phone|fone)";
string isSubject="(?i)(subj|subject|t(h|)em(e|a)|тема|заголовок)";
string isMail="(?i)(m(a|e)il|po(4|ch)ta|почт)";
string isMessage="textarea";
List<string> regs = new List<string>{
isName,isPhone,isMail,isSubject,isMessage
};
Dictionary<string,string> regval = new Dictionary<string,string>();
regval.Add(isName,name);
regval.Add(isPhone,phone);
regval.Add(isMail,mail);
regval.Add(isSubject,subj);
regval.Add(isMessage,message);
Func<HtmlElement,string,bool> Check = (h,reg) =>
{
bool output = false;
string outer = h.OuterHtml;
var parent1 = h.ParentElement;
var parent2= parent1.ParentElement;
if(parent1.TagName=="label"||(parent1.FindChildrenByTags("label").Count>0
&&parent1.FindChildrenByTags("input").Count==1))
outer+=parent1.OuterHtml;
if(parent2.TagName=="label"||(parent2.FindChildrenByTags("label").Count>0&&
parent2.FindChildrenByTags("input").Count==1
))
outer+=parent2.OuterHtml;
if(Regex.IsMatch(outer,reg,RegexOptions.IgnoreCase))
output = true;
return output;
};
Action<HtmlElement,string> SetValue = (h,val) =>
{
h.Focus();
h.Click();
h.SetValue("", "none", true);
h.SetValue(val, "none", true);
};
HtmlElement form = instance.ActiveTab.FindElementByTag("form",N);
regs.ForEach(reg=>
{
form.FindChildrenByTags("input;textarea").ToList().ForEach(i=>
{
if(i.GetAttribute("type") != "submit" && i.GetAttribute("type") != "hidden")
{
if(Check(i,reg))
SetValue(i,regval[reg]);
}
});
});
HtmlElementCollection he = instance.ActiveTab.FindElementsByXPath("//li[contains(@class, 'gform_validation_container')]");
foreach (HtmlElement inp in he)
{
inp.FindChildrenByTags("input;textarea").ToList().ForEach(i=>
{
i.SetValue("", "none", true);
});
}
form.FindChildrenByTags("input:checkbox").ToList()
.ForEach(c=>c.SetValue("true","Full",false,false));
form.FindChildrenByTags("select").ToList()
.ForEach(sel=>
{
sel.Click();
sel.SetValue(
sel.FindChildrenByTags("option").ElementAt(sel.FindChildrenByTags("option").Count-1).InnerHtml
,"Middle",true,false);
});
HtmlElement heCh = form.FindChildByTag("input", N);
heCh.Click();
instance.WaitFieldEmulationDelay();
instance.SendText("{ENTER}", 23);
instance.WaitFieldEmulationDelay();
HtmlElement button = instance.ActiveTab.FindElementByTag("form", N).FindChildByAttribute("input:submit", "type", "submit", "regexp", 0);
button.Click();
System.Threading.Thread.Sleep(500);
tab.WaitDownloading();
string log = "Успешно отправили с донора: " + project.Variables["url"].Value;
project.SendInfoToLog(log, true);
System.Threading.Thread.Sleep(rand.Next(1,333));