Je travaille sur un grattoir qui passe par le code HTML essayant de gratter les domaines de Tor. Cependant, j'ai du mal à trouver un morceau de code pour correspondre à des domaines de Tor.
Tor domaines sont typiquement au format de: p>
ou p>
Je veux juste faire correspondre les URL qui seraient contenues dans une page, dans le format http://sitetexile.onion ou https://sitehereitis.onion . Ceci est dans un tas de texte qui peut ne pas être des URL. Il devrait simplement tirer les URL. P>
Je suis sûr qu'il y a un morceau de regex facile ou bon qui le fera, mais je n'ai pas pu en trouver un. Si quelqu'un est capable de relier un ou de tourner rapidement une up, ce sera apprécié. Merci beaucoup. P>
session = requests.session() session.proxies = {} session.proxies['http'] = 'socks5h://localhost:9050' session.proxies['https'] = 'socks5h://localhost:9050' r = session.get('http://facebookcorewwwi.onion') print(r.text)
3 Réponses :
Le regex.match code> retournera
Aucun code> si l'URL n'est pas assortie.
regex = re.compile(r"^(?:https?\:\/\/)?[\w\-\.]+\.onion")
Donc, j'ai utilisé cela et il n'est pas capable de trouver des résultats pour cela? Par exemple, les chaînes suivantes ne correspondent pas: static.xx.fbcdn23dssr3jqnq.onion/rsrc.php/v3/y4/r/... et pixel.facebookcorewwi. oignon
Donc, vous ne voulez pas correspondre aux URL avec http (s) code> partie?
Je veux dire aussi ces URL, mais elles avec et sans être bonnes
D'accord, j'ai modifié ma réponse pour ajouter la regex pour correspondre avec facultative http (s) code>.
Les modèles de regex sont surtout standard, donc je vous recommanderais ce modèle: p>
'. oignon $' p>
Backslash échappe au point de point et "$" signifie la fin de la chaîne. Étant donné que toutes les URL commencent par "http (s): //" Il n'y a pas besoin de l'inclure dans le motif. P>
En supposant que ceux-ci sont pris à partir d'attributs href, vous pouvez essayer un attribut = sélecteur de valeur avec $ se termine avec l'opérateur
from bs4 import BeautifulSoup as bs import requests resp = requests.get("https://en.wikipedia.org/wiki/Tor_(anonymity_network)") #example url. Replace with yours. soup = bs(resp.text,'lxml') links = [item['href'] for item in soup.select('[href$=".onion"]')]
Qu'entendez-vous par correspondre? Voulez-vous simplement voir si cela se termine par
oignon code>?
Ouais à peu près, je veux juste faire correspondre des URL qui seraient contenues dans une page, dans le format SITETEXTHERE.ONION ou < Un href = "https://sitehereitis.onion" rel = "nofollow noreferrer"> SiteHereitis.onion . Ceci est dans un tas de texte qui peut ne pas être des URL. Il devrait simplement tirer les URL.
Un domaine TOR est la première moitié du hachage SHA-1 codé de base32 d'une clé publique, à partir d'une paire de clé RSA de 1024 bits avec le suffixe ".onion". Le résultat est qu'un nom de domaine .onion aura 16 caractères et ne peut contenir que des lettres minuscules A à Z et les chiffres 2 à 7. source