Comment puis-je obtenir html de la page avec cloudflare ddos portection?
- Je utiliser htmlagility pour obtenir la page web de données, mais j'ai tout essayé avec la page à l'aide de www.cloudflare.com protection ddos. La page de redirection n'est pas possible de traiter dans htmlagility car ils n'ont pas de redirection avec méta ni js, je suppose, ils vérifient si vous avez déjà vérifié avec un cookie que je n'ai pas réussi à simuler avec c#. Lorsque j'arrive à la page, le code html est à partir de l'atterrissage cloadflare page.
En passant cookies stackoverflow.com/a/20478716/736079
Vous pouvez également utiliser le BrowserSession classe comme expliqué ici: refactoringaspnet.blogspot.nl/2010/04/...
Vous pouvez également utiliser le BrowserSession classe comme expliqué ici: refactoringaspnet.blogspot.nl/2010/04/...
OriginalL'auteur ItalianOne | 2015-09-06
Vous devez vous connecter pour publier un commentaire.
J'ai aussi rencontré ce problème il y a quelques temps. Le réel solution serait de résoudre le défi de la cloudflare sites web vous donne (vous avez besoin de calculer une réponse correcte à l'aide de javascript, de le retourner, et puis vous recevez un cookie de votre jeton avec laquelle vous pouvez continuer à afficher le site web). Donc tout ce que vous obtiendriez normalement, c'est une page comme
En fin de compte, je viens d'appeler un python script avec une coquille d'exécuter. J'ai utilisé les modules fournis dans cette github fourche. Ceci pourrait servir de point de départ pour mettre en œuvre le contournement de la cloudflare anti-dDoS page en C# aswell.
Pour info, le script python que j'ai écrit pour mon usage personnel seulement écrit le cookie dans un fichier. J'ai lu que plus tard, à nouveau à l'aide de C# et de le stocker dans un
CookieJar
pour continuer à naviguer sur la page à l'intérieur de C#.EDIT: Pour répéter cela, cela n'a que PEU à voir avec les cookies! Cloudflare vous oblige à résoudre un RÉEL défi à l'aide des commandes javascript. Ce n'est pas aussi facile que d'accepter un cookie et l'utiliser plus tard. Regardez https://github.com/Anorov/cloudflare-scrape/blob/master/cfscrape/init.py et le ~40 lignes de javascript émulation pour résoudre le défi.
Edit2: au Lieu d'écrire quelque chose de contourner la protection, j'ai aussi vu des gens utiliser à part entière du navigateur d'objet (c'est pas un headless browser) pour aller sur le site et vous abonner à certains événements lorsque la page est chargée. Utiliser le
WebBrowser
classe pour créer un infinetly petite fenêtre de navigateur et de vous abonner à la appropriée des événements.Edit3:
Bon, j'ai effectivement mis en œuvre le C#. Il utilise le Moteur JavaScript Jint pour .NET, disponible via https://www.nuget.org/packages/Jint
Le cookie de code de traitement est laid parce que parfois les
HttpResponse
classe ne capte pas les cookies, bien que l'en-tête contient unSet-Cookie
section.La fonction retournera un client web avec la solution des défis et des biscuits à l'intérieur. Vous pouvez l'utiliser comme suit:
Cattivo bien fait!
Cattivo ok mise à jour: il travailla d'abord, mais ensuite il a commencé à jeter des execptions, "de Dégagement en échec après 3 tentative(s)". Ne cloudflare changé les défis sur certains serveurs?
Cattivo mise à jour: eh bien, j'ai changé le MaxRetries Bien sur la clearanceHandler à 3 et l'erreur a disparu et maintenant, je suis à chaque fois le message d'erreur "une tâche a été annulée", sur la "en attente de client.GetStringAsync(url)".....
Cattivo mise à jour: Augmentation du délai d'attente du client et l'erreur a disparu mais maintenant l'erreur "Autorisation a échoué au bout de 4 tentative(s)", eh bien, on dirait que CloudFlare changé leurs défis...
OriginalL'auteur Maximilian Gerhardt
Un "simple" méthode de travail permettant de contourner Cloudflare si vous n'utilisez pas les bibliothèques (qui parfois ne fonctionne pas).
Assurez-vous que le UserAgent pour les deux WebBrowser et WebClient sont identiques. Cloudflare vous donnera 503, si un décalage existe sur le WebClient aftwerwards.
Vous aurez besoin de les rechercher ici sur la pile sur la façon de recevoir des cookies de Navigateur et comment modifier WebClient de sorte que vous pouvez régler sa cookiecontainer + modifier le UserAgent sur 1 ou deux pour qu'ils soient identiques.
Puisque les témoins de Cloudflare semble ne jamais expirer, vous pouvez sérialiser les cookies à quelque part temporaires et de la charge à chaque fois que vous exécutez votre application, peut-être une vérification et récupère à nouveau faute de.
Fait cela pendant un certain temps et il fonctionne très bien. Ne pouvait pas obtenir le C# libs de travail pour un Cloudflare site pendant qu'ils travaillaient sur les autres. Aucune idée de pourquoi encore.
Cela fonctionne aussi en coulisses sur un serveur IIS, mais vous aurez à mettre en place des "mal vu" paramètres". C'est, exécutez l'application de la piscine en tant que SYSTÈME ou ADMIN et réglez le mode Classique.
OriginalL'auteur Wolf5
Utilisation
WebClient
pour obtenir de l'html de la page,J'ai écrit à la suite de la classe qui gère les cookies trop,
Il suffit de passer
CookieContainer
exemple dans le constructeur.UTILISATION:
this.Headers["X-Requested-With"] = "XMLHttpRequest";
contourner l'intégralité de Cloudflare l'anti-dDoS mesures de protection?le
Headers
doit modifiée, je vous suggère de OP, pour le journal la demande de son navigateur à l'aide de fiddler et modifier les en-têtes en conséquence. J'espère que par l'utilisation de cette classe de problème sera résolu.Ce problème n'est pas seulement à propos des cookies. @MaximilianGerhardt a expliqué dans sa réponse, vous avez à résoudre un concours JavaScript afin de contourner CloudFlare Anti-DDoS mesure.
OriginalL'auteur Nitin Sawant