Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
HingeSDK — पायथन के लिए Hinge डेटिंग ऐप SDK, अकेले और ऊबे हुए सॉफ्टवेयर इंजीनियर्स के लिए | Kitploit
उपकरण/GitHubGitHub/reedgraff/hingesdk
OSINT (खुला स्रोत खुफिया)स्क्रिप्टिंग और स्वचालनडेटा निष्कासनजानकारी एकत्र करनासामाजिक इंजीनियरिंगउपयोगिताएँ और फ्रेमवर्कक्रॉलर
GitHubreedgraff/hingesdk

HingeSDK

पायथन के लिए Hinge डेटिंग ऐप SDK, अकेले और ऊबे हुए सॉफ्टवेयर इंजीनियर्स के लिए

रिपॉजिटरी देखें
113159 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

HingeSDK

Hinge API के लिए अनौपचारिक Python SDK. Hinge के साथ प्रोग्रामेटिक रूप से इंटरैक्ट करें ताकि सिफारिशें प्राप्त करें, संदेश भेजें, मीडिया डाउनलोड करें और स्वचालित इंटरैक्शन करें।

प्रमाणीकरण और वातावरण सेटअप

इस SDK का उपयोग करने के लिए, आपको मान्य प्रमाणीकरण क्रेडेंशियल्स की आवश्यकता है। आप इन्हें .env फ़ाइल में संग्रहीत कर सकते हैं या सीधे क्लाइंट को पास कर सकते हैं।

आवश्यक चर

  • BEARER_TOKEN: आपका JWT प्रमाणीकरण टोकन (जैसे, L2euNWN...)।
  • SESSION_ID: वर्तमान सत्र UUID।
  • USER_ID: आपकी अद्वितीय उपयोगकर्ता/खिलाड़ी आईडी।

क्रेडेंशियल्स कैसे प्राप्त करें

विधि 1: रूटेड फोन / प्रॉक्सी (मौजूदा खातों के लिए अनुशंसित)

यदि आप नए डिवाइस लॉगिन से फ़्लैग होने के जोखिम के बिना अपने मौजूदा Hinge खाते का उपयोग करना चाहते हैं, तो आपको ऐप के नेटवर्क ट्रैफ़िक से इन मानों को निकालना होगा।

नोट: सही चर प्राप्त करने के लिए आपको यह केवल एक बार करने की आवश्यकता है। उन्हें कैप्चर करने के बाद, आप भविष्य के सत्रों के लिए SMS लॉगिन विधि का उपयोग कर सकते हैं।

  1. एक रूटेड एंड्रॉइड डिवाइस या एक मानक प्रॉक्सी सेटअप (जैसे HTTP Toolkit या Charles Proxy के साथ) का उपयोग करें क्योंकि Hinge सर्टिफिकेट पिनिंग का उपयोग नहीं करता है।
  2. prod-api.hingeaws.net या समान Hinge एंडपॉइंट्स पर HTTPS अनुरोधों का निरीक्षण करें।
  3. प्रोफ़ाइल एंडपॉइंट्स के अनुरोध या प्रतिक्रिया बॉडी से निम्नलिखित हेडर/मान निकालें:
    • authorization (Bearer टोकन)
    • x-session-id
    • x-device-id
    • x-install-id
    • User ID (अक्सर प्रतिक्रिया बॉडी में subjectId या समान के रूप में)

विधि 2: SMS लॉगिन (प्रायोगिक)

आप SDK के माध्यम से SMS के ज़रिए लॉगिन करके नए क्रेडेंशियल्स उत्पन्न कर सकते हैं। यह एक ताज़ा लॉगिन प्रवाह करता है।

root@kitploit:~
from hingesdk.client import HingeClient

# ये आईडी आपके खाते से जुड़े वास्तविक मानों से मेल खानी चाहिए।
# आप रैंडम UUID का उपयोग नहीं कर सकते; उन्हें खाते के पंजीकृत डिवाइस के अनुरूप होना चाहिए।
client = HingeClient.login_with_sms(
    phone_number="+15551234567", 
    device_id="your_device_id_uuid", 
    install_id="your_install_id_uuid" 
)

print(f"BEARER_TOKEN={client.auth_token}")
print(f"SESSION_ID={client.session_id}")
print(f"USER_ID={client.user_id}")

स्थापना

रिपॉजिटरी को क्लोन करें और पैकेज स्थापित करें:

root@kitploit:~
git clone https://github.com/reedgraff/hingesdk
cd hingesdk
pip install .

त्वरित प्रारंभ

यहाँ प्रमाणीकरण और उपयोगकर्ता सिफारिशें प्राप्त करने का एक न्यूनतम उदाहरण है।

root@kitploit:~
import os
from hingesdk.api import HingeAPIClient

# क्रेडेंशियल्स के साथ प्रारंभ करें
client = HingeAPIClient(
    auth_token=os.getenv("BEARER_TOKEN"),
    session_id=os.getenv("SESSION_ID"),
    user_id=os.getenv("USER_ID")
)

# सिफारिशें प्राप्त करें
recs = client.get_recommendations()
print(f"सिफारिशें अनुरोध सफलतापूर्वक प्राप्त किया गया।")

उपयोग और उदाहरण

उदाहरण: संदेश भेजना
root@kitploit:~
from hingesdk.client import HingeAPIClient

auth_token = 'your_auth_token'
user_id = 'your_user_id'

client = HingeAPIClient(auth_token=auth_token, user_id=user_id)
response = client.send_message(
    subject_id='receiver_id',
    message='नमस्ते, यह एक परीक्षण संदेश है!'
)
print(response)
उदाहरण: उपयोगकर्ता सिफारिशें प्राप्त करना
root@kitploit:~
from hingesdk.api import HingeAPIClient

client = HingeAPIClient(auth_token=auth_token, user_id=user_id)
recommendations = client.get_recommendations()
print(recommendations)
उदाहरण: उपयोगकर्ता छवियाँ डाउनलोड करना
root@kitploit:~
from hingesdk.tools import HingeTools
from hingesdk.api import HingeAPIClient
from hingesdk.media import HingeMediaClient

api_client = HingeAPIClient(auth_token=auth_token, user_id=user_id)
media_client = HingeMediaClient(auth_token=auth_token)

tools = HingeTools(api_client, media_client)
tools.download_recommendation_content(output_path='path_to_save_images')
उदाहरण: उपयोगकर्ता जानकारी प्राप्त करना और प्रोफाइल को लाइक करना
root@kitploit:~
import os
import json
from hingesdk.tools import HingeTools
from hingesdk.api import HingeAPIClient
from hingesdk.media import HingeMediaClient

auth_token = os.getenv("BEARER_TOKEN")
session_id = os.getenv("SESSION_ID")
user_id = os.getenv("USER_ID")

api_client = HingeAPIClient(
    auth_token=auth_token,
    session_id=session_id,
    user_id=user_id
)
media_client = HingeMediaClient(auth_token=auth_token)
tools = HingeTools(api_client, media_client)

# उदाहरण: उपयोगकर्ता जानकारी प्राप्त करें
tools.create_profile_json(
    source=ProfileSource.STANDOUTS,
    output_file="standouts.json"
)

# उदाहरण: किसी उपयोगकर्ता को लाइक करें 
with open("standouts.json", "r") as f:
    profiles = json.load(f)

personData = profiles["35582109789..."]

# किसी उपयोगकर्ता के प्रश्न को लाइक करें
questionIDToLike = "5c4a346828fd883a24..."
response = api_client.like_profile(
    subject_id=personData["interaction_data"]["subject_id"],
    rating_token=personData["interaction_data"]["rating_token"],
    prompt={
        "questionId": questionIDToLike,
        "response": "मैं एक साल से मियामी में हूँ और अभी भी नहीं गया (╥﹏╥)"
    }
)
print(response)

# किसी उपयोगकर्ता की फ़ोटो को लाइक करें
# photoIDToLike = "2c6411ac-66e4-4194-..."
# response = api_client.like_profile(
#     subject_id=personData["interaction_data"]["subject_id"],
#     rating_token=personData["interaction_data"]["rating_token"],
#     photo={
#         "contentId": photoIDToLike,
#         "comment": "तो कितने लोगों ने टिप्पणी की है कि वे पहले यहाँ आ चुके हैं?"
#     }
# )
# print(response)
वास्तविक दुनिया का उदाहरण: विश्वविद्यालय खोजक (शिक्षा द्वारा मिलान फ़िल्टर करें)

यह उदाहरण दर्शाता है कि कैसे सिफारिशों को स्क्रैप करें और विशिष्ट मानदंडों (जैसे शीर्ष विश्वविद्यालय) के आधार पर प्रोफाइल फ़िल्टर करें।

root@kitploit:~
def find_top_50_university_students(json_file_path, age_min=18, age_max=24):
    # मिलान प्रोफाइल को संग्रहीत करने के लिए सूची
    matching_profiles = []
    
    # शीर्ष 50 विश्वविद्यालयों के लिए पैटर्न का शब्दकोश (केस इनसेंसिटिव)
    top_50_patterns = {
        "Princeton University": [r"princeton", r"\bpu\b", r"princeton\s+university"],
        "Massachusetts Institute of Technology": [r"mit", r"massachusetts\s+institute\s+of\s+technology", r"mass\s+tech"],
        "Harvard University": [r"harvard", r"\bhu\b", r"harvard\s+university"],
        "Stanford University": [r"stanford", r"\bsu\b", r"stanford\s+university"],
        "Yale University": [r"yale", r"\byu\b", r"yale\s+university"],
        "California Institute of Technology": [r"caltech", r"california\s+institute\s+of\s+technology"],
        "Duke University": [r"duke", r"\bdu\b", r"duke\s+university"],
        "Johns Hopkins University": [r"johns\s+hopkins", r"\bjhu\b", r"hopkins"],
        "Northwestern University": [r"northwestern", r"\bnu\b", r"northwestern\s+university"],
        "University of Pennsylvania": [r"upenn", r"penn", r"university\s+of\s+pennsylvania"],
        "Cornell University": [r"cornell", r"\bcu\b", r"cornell\s+university"],
        "University of Chicago": [r"uchicago", r"university\s+of\s+chicago", r"u\s+chicago"],
        "Brown University": [r"brown", r"\bbu\b", r"brown\s+university"],
        "Columbia University": [r"columbia", r"\bcu\b", r"columbia\s+university"],
        "Dartmouth College": [r"dartmouth", r"\bdc\b", r"dartmouth\s+college"],
        "University of California--Los Angeles": [r"ucla", r"university\s+of\s+california\s+los\s+angeles", r"uc\s+la"],
        "University of California, Berkeley": [r"uc\s+berkeley", r"berkeley", r"university\s+of\s+california\s+berkeley"],
        "Rice University": [r"rice", r"\bru\b", r"rice\s+university"],
        "University of Notre Dame": [r"notre\s+dame", r"\bnd\b", r"university\s+of\s+notre\s+dame"],
        "Vanderbilt University": [r"vanderbilt", r"\bvu\b", r"vandy"],
        "Carnegie Mellon University": [r"carnegie\s+mellon", r"\bcmu\b", r"cmu"],
        "University of Michigan--Ann Arbor": [r"umich", r"michigan", r"university\s+of\s+michigan"],
        "Washington University in St. Louis": [r"washu", r"washington\s+university", r"wu\s+stl"],
        "Emory University": [r"emory", r"\beu\b", r"emory\s+university"],
        "Georgetown University": [r"georgetown", r"\bgu\b", r"georgetown\s+university"],
        "University of Virginia": [r"uva", r"virginia", r"university\s+of\s+virginia"],
        "University of North Carolina--Chapel Hill": [r"unc", r"chapel\s+hill", r"university\s+of\s+north\s+carolina"],
        "University of Southern California": [r"usc", r"southern\s+california", r"university\s+of\s+southern\s+california"],
        "University of California, San Diego": [r"ucsd", r"uc\s+san\s+diego", r"university\s+of\s+california\s+san\s+diego"],
        "New York University": [r"nyu", r"new\s+york\s+university"],
        "University of Florida": [r"uf", r"florida", r"university\s+of\s+florida"],
        "The University of Texas--Austin": [r"ut\s+austin", r"utexas", r"university\s+of\s+texas"],
        "Georgia Institute of Technology": [r"gatech", r"georgia\s+tech", r"georgia\s+institute\s+of\s+technology"],
        "University of California, Davis": [r"uc\s+davis", r"ucd", r"university\s+of\s+california\s+davis"],
        "University of California--Irvine": [r"uci", r"uc\s+irvine", r"university\s+of\s+california\s+irvine"],
        "University of Illinois Urbana-Champaign": [r"uiuc", r"illinois", r"university\s+of\s+illinois"],
        "Boston College": [r"bc", r"boston\s+college"],
        "Tufts University": [r"tufts", r"\btu\b", r"tufts\s+university"],
        "University of California, Santa Barbara": [r"ucsb", r"uc\s+santa\s+barbara", r"university\s+of\s+california\s+santa\s+barbara"],
        "University of Wisconsin--Madison": [r"uw\s+madison", r"wisconsin", r"university\s+of\s+wisconsin"],
        "Boston University": [r"bu", r"boston\s+university"],
        "The Ohio State University": [r"ohio\s+state", r"osu", r"the\s+ohio\s+state\s+university"],
        "Rutgers University--New Brunswick": [r"rutgers", r"ru", r"rutgers\s+university"],
        "University of Maryland, College Park": [r"umd", r"maryland", r"university\s+of\s+maryland"],
        "University of Rochester": [r"rochester", r"\bur\b", r"university\s+of\s+rochester"],
        "Lehigh University": [r"lehigh", r"\blu\b", r"lehigh\s+university"],
        "Purdue University--Main Campus": [r"purdue", r"\bpu\b", r"purdue\s+university"],
        "University of Georgia": [r"uga", r"georgia", r"university\s+of\s+georgia"],
        "University of Washington": [r"uw", r"washington", r"university\s+of\s+washington"],
        "Wake Forest University": [r"wake\s+forest", r"\bwfu\b", r"wake"],
        "Case Western Reserve University": [r"case\s+western", r"\bcwru\b", r"case"],
        "Texas A&M University": [r"texas\s+a&m", r"tamu", r"a&m"],
        "Virginia Tech": [r"virginia\s+tech", r"vt", r"vtech"],
        "Florida State University": [r"fsu", r"florida\s+state", r"florida\s+state\s+university"],

        "University of Miami": [r'umiami', r'\bum\b', r'university\s+of\s+miami']
    }
    
    try:
        # JSON फ़ाइल पढ़ें
        with open(json_file_path, 'r') as file:
            data = json.load(file)
            
        # प्रत्येक उपयोगकर्ता प्रोफ़ाइल के माध्यम से पुनरावृति करें
        for user_id, profile in data.items():
            profile_info = profile.get('profile_info', {})
            
            # आयु सीमा जांचें (डिफ़ॉल्ट कॉन्फ़िगर करने योग्य न्यूनतम/अधिकतम)
            age = profile_info.get('age', 0)
            if not (age_min <= age <= age_max):
                continue
                
            # शिक्षा सूची प्राप्त करें (यदि मौजूद नहीं है तो डिफ़ॉल्ट खाली सूची)
            educations = profile_info.get('educations', [])
            
            # शीर्ष 50 विश्वविद्यालय संदर्भों के लिए प्रत्येक शिक्षा स्ट्रिंग जांचें
            found_match = False
            matched_university = None
            for edu in educations:
                if not isinstance(edu, str):
                    continue
                    
                # केस-इनसेंसिटिव मिलान के लिए लोअरकेस में कनवर्ट करें
                edu_lower = edu.lower()
                
                # प्रत्येक विश्वविद्यालय के पैटर्न जांचें
                for university, patterns in top_50_patterns.items():
                    for pattern in patterns:
                        if re.search(pattern, edu_lower):
                            found_match = True
                            matched_university = university
                            break
                    if found_match:
                        break
                if found_match:
                    break
            
            # यदि मिलान मिला, तो प्रोफ़ाइल को परिणामों में जोड़ें
            if found_match:
                # छवियाँ सूची प्राप्त करें (यदि मौजूद नहीं है तो डिफ़ॉल्ट खाली सूची)
                images = profile.get('images', [])
                image_urls = [img.get('url', '') for img in images if img.get('url')]
                
                matching_profiles.append({
                    'user_id': user_id,
                    'age': age,
                    'firstName': profile_info.get('firstName', ''),
                    'educations': educations,
                    'matched_university': matched_university,
                    'location': profile_info.get('location', {}).get('name', ''),
                    'image_urls': image_urls
                })
                
        return matching_profiles
    
    except FileNotFoundError:
        print(f"त्रुटि: फ़ाइल {json_file_path} नहीं मिली.")
        return []
    except json.JSONDecodeError:
        print(f"त्रुटि: {json_file_path} में अमान्य JSON प्रारूप.")
        return []
    except Exception as e:
        print(f"अप्रत्याशित त्रुटि: {str(e)}")
        return []



def main():
    # अपने प्रमाणीकरण टोकन के साथ क्लाइंट प्रारंभ करें
    auth_token = os.getenv("BEARER_TOKEN")
    session_id = os.getenv("SESSION_ID")
    user_id = os.getenv("USER_ID")
    
    api_client = HingeAPIClient(
        auth_token=auth_token,
        session_id=session_id,
        user_id=user_id
    )
    media_client = HingeMediaClient(auth_token=auth_token)
    tools = HingeTools(api_client, media_client)

    # उदाहरण: बड़े पैमाने पर स्क्रैपिंग
    # tools.scrape_recommendations_multiple(
    #     iterations=40, # 40 लोगों को छोड़ने से पहले अधिकतम लगता है...
    #     min_sleep = 20,
    #     max_sleep = 60,
    # )
    json_file_path = 'all_recommendations.json'
    csv_file_path = 'university_matches.csv'
    results = find_top_50_university_students(json_file_path)

    print(f"{len(results)} मिलान प्रोफाइल मिले.")

    # प्रत्येक छवि के लिए अलग कॉलम के साथ CSV हेडर परिभाषित करें
    headers = ['timestamp', 'user_id', 'name', 'age', 'location', 'education', 
            'image1', 'image2', 'image3', 'image4', 'image5', 'image6']

    # CSV फ़ाइल को एपेंड मोड में खोलें
    with open(csv_file_path, 'a', newline='', encoding='utf-8') as csvfile:
        writer = csv.DictWriter(csvfile, fieldnames=headers)
        
        # यदि फ़ाइल खाली है तो हेडर लिखें
        if csvfile.tell() == 0:
            writer.writeheader()
        
        # प्रत्येक प्रोफ़ाइल को एक पंक्ति के रूप में लिखें
        for profile in results:
            # पंक्ति के लिए एक शब्दकोश बनाएं
            row_data = {
                'timestamp': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
                'user_id': profile['user_id'],
                'name': profile['firstName'],
                'age': profile['age'],
                'location': profile['location'],
                'education': ', '.join(profile['educations'])
            }
            
            # छवि URL को अलग-अलग कॉलम में जोड़ें
            for i in range(6):
                image_key = f'image{i+1}'
                if profile['image_urls'] and i < len(profile['image_urls']):
                    row_data[image_key] = profile['image_urls'][i]
                else:
                    row_data[image_key] = ''
            
            writer.writerow(row_data)

    print(f"परिणाम {csv_file_path} में जोड़ दिए गए हैं")

प्रोजेक्ट संरचना

SDK तार्किक मॉड्यूल में संगठित है ताकि चिंताओं को अलग किया जा सके।

root@kitploit:~
hingesdk/
├── __init__.py
├── client.py       # बेस HingeClient: HTTP अनुरोध, हेडर और प्रमाणीकरण को संभालता है
├── api.py          # HingeAPIClient: कोर API विधियाँ (लाइक, संदेश, सिफारिशें प्राप्त करें)
├── media.py        # HingeMediaClient: छवियों को डाउनलोड/प्रोसेस करने के लिए सहायक
├── tools.py        # HingeTools: उच्च-स्तरीय वर्कफ़्लो (बैच स्क्रैपिंग, निर्यात)
├── models.py       # Pydantic मॉडल और डेटा संरचनाएँ (यदि लागू हो)
├── exceptions.py   # कस्टम अपवाद वर्ग (HingeAPIError, HingeAuthError)
└── assets/         # स्थिर संसाधन (जैसे, प्रॉम्प्ट परिभाषाएँ)

लाइसेंस

यह प्रोजेक्ट MIT लाइसेंस के तहत लाइसेंस प्राप्त है।

टूल डाउनलोड करें