Skip to content

Instantly share code, notes, and snippets.

@jtarang
Created December 6, 2018 07:17
Show Gist options
  • Save jtarang/a451ebff69884cc3c148815006b7520b to your computer and use it in GitHub Desktop.
Save jtarang/a451ebff69884cc3c148815006b7520b to your computer and use it in GitHub Desktop.
#!/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