Created
December 6, 2018 07:17
-
-
Save jtarang/a451ebff69884cc3c148815006b7520b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
__author__ = "J_Hack92" | |
import requests | |
import json | |
from lxml import html | |
from re import sub as re | |
class HtmlRat: | |
def __init__(self, url): | |
self.url = url | |
self.tree = self.req_page() | |
def req_page(self): | |
page = requests.get(self.url) | |
self.tree = html.fromstring(page.content) | |
return self.tree | |
def tag_data(self, txpath): | |
tag_val = self.tree.xpath(txpath + "/text()") | |
val = ''.join(tag_val).strip(' ') | |
val = val.split('\n') | |
return val | |
# Specifically for the address but can be used for stripping content by \n | |
def tag_data2(self, txpath): | |
tag_val = self.tree.xpath(txpath + "/text()") | |
tag_data = [] | |
for t in range(0, len(tag_val)): | |
tag = tag_val[t].strip("\n") | |
tag = tag.lstrip(" ") | |
address = tag.rstrip(" ") | |
tag_data.append(address) | |
return tag_data | |
class Person(object): | |
def __init__(self, url): | |
self.url = url | |
self.markup = HtmlRat(self.url) | |
self.name = self.markup.tag_data('//*[@id="details"]/div[2]/div[2]/div/div[1]/h3') | |
self.phone = self.markup.tag_data('//*[@id="details"]/div[2]/div[2]/div/div[2]/dl[4]/dd') | |
self.address = self.markup.tag_data2('//*[@id="details"]/div[2]/div[2]/div/div[1]/div') | |
self.passwd = self.markup.tag_data('//*[@id="details"]/div[2]/div[2]/div/div[2]/dl[11]/dd') | |
self.user = self.markup.tag_data('//*[@id="details"]/div[2]/div[2]/div/div[2]/dl[10]/dd') | |
self.domain = self.markup.tag_data('//*[@id="details"]/div[2]/div[2]/div/div[2]/dl[9]/dd') | |
self.bday = self.markup.tag_data('//*[@id="details"]/div[2]/div[2]/div/div[2]/dl[6]/dd') | |
self.age = self.markup.tag_data('//*[@id="details"]/div[2]/div[2]/div/div[2]/dl[7]/dd') | |
self.zodiac = self.markup.tag_data('//*[@id="details"]/div[2]/div[2]/div/div[2]/dl[8]/dd') | |
self.weight = self.markup.tag_data('//*[@id="details"]/div[2]/div[2]/div/div[2]/dl[20]/dd') | |
self.height = self.markup.tag_data('//*[@id="details"]/div[2]/div[2]/div/div[2]/dl[19]/dd') | |
self.blood = self.markup.tag_data('//*[@id="details"]/div[2]/div[2]/div/div[2]/dl[21]/dd') | |
self.creditcard = self.markup.tag_data('//*[@id="details"]/div[2]/div[2]/div/div[2]/dl\ | |
[14]/dd') | |
self.expiration = self.markup.tag_data('//*[@id="details"]/div[2]/div[2]/div/div[2]/\ | |
dl[15]/dd') | |
self.cvv2 = self.markup.tag_data('//*[@id="details"]/div[2]/div[2]/div/div[2]/dl[16]/dd') | |
def NewPerson(): | |
person = Person("http://fakenamegenerator.com") | |
name = person.name[0].split(" ") | |
person.password = person.passwd[0] | |
person.firstname = name[0] | |
person.middlename = name[1].rstrip(".") | |
person.lastname = name[2] | |
person.phone = re("[^0-9]", "", person.phone[0]) | |
person.street = person.address[0] | |
person.city = person.address[1].split(",")[0] | |
person.state = person.address[1].split(" ")[1] | |
person.zipcode = person.address[1].split(" ")[-1] | |
person.username = person.user[0] | |
person.domain = person.domain[0].split("@")[1] | |
person.email = person.username + "@" + person.domain | |
person.activate = "fakemailgenerator.com/#/{}/{}/".format( | |
person.domain, person.username) | |
person.bday = person.bday[0] | |
bday_split = person.bday.split(" ") | |
person.month = bday_split[0] | |
person.day = bday_split[1].strip(",") | |
person.year = bday_split[2] | |
person.age = person.age[0] | |
person.zodiac = person.zodiac[0] | |
person.height = person.height[0].replace("\\", "") | |
person.weight = person.weight[0] | |
person.blood = person.blood[0] | |
person.creditcard = person.creditcard[0].replace(" ", "") | |
person.expiration = person.expiration[0].split("/") | |
person.emonth = person.expiration[0] | |
person.eyear = person.expiration[1] | |
person.cvv2 = person.cvv2[0] | |
json_person = { | |
"_credits": person.url, | |
"person": [{ | |
"name": { | |
"first": person.firstname, | |
"middle": person.middlename, | |
"last": person.lastname | |
}, | |
"address": { | |
"street": person.street, | |
"city": person.city, | |
"state": person.state, | |
"zip": person.zipcode | |
}, | |
"phone": person.phone, | |
"login": { | |
"username": person.username.lower(), | |
"password": person.password, | |
"email": { | |
"address": person.email.lower(), | |
"link": person.activate | |
} | |
}, | |
"birthday": { | |
"zodiac": person.zodiac, | |
"age": person.age, | |
"month": person.month, | |
"day": person.day, | |
"year": person.year, | |
"date": person.bday | |
}, | |
"physical": { | |
"height": person.height, | |
"weight": person.weight, | |
"blood_type": person.blood | |
}, | |
"credit_card": { | |
"number": person.creditcard, | |
"expires": { | |
"month": person.emonth, | |
"year": person.eyear | |
}, | |
"cvv2": person.cvv2 | |
} | |
}] | |
} | |
return json.dumps(json_person, sort_keys=True, indent=2, separators=(',', ': ')) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment