Advertisement
Guest User

Untitled

a guest
Mar 4th, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.70 KB | None | 0 0
  1. #!/usr/bin/env python
  2. #-*- coding: utf-8 -*-
  3.  
  4.  
  5. ##Install Splinter http://splinter.readthedocs.org/en/latest/install.html"
  6. ##Install Stem: https://stem.torproject.org"
  7.  
  8.  
  9.  
  10. import sys, getopt, re, os
  11. from stem.control import Controller
  12. from datetime import datetime
  13. from splinter.request_handler.status_code import HttpResponseError
  14. import getpass
  15.  
  16.  
  17. def main(argv):
  18. d = datetime.now()
  19. date = str(d.year) + '' + str(d.month) + '' + str(d.day) + '' + str(d.hour) + '' + str(d.minute) + '' + str(d.second)
  20. username = None
  21. txt = None
  22. try:
  23. opts, args = getopt.getopt(argv, "hi:u:", ["file=", "user=", "help"])
  24. except getopt.GetoptError:
  25. print 'Use --help for help'
  26. sys.exit(2)
  27.  
  28. for opt, arg in opts:
  29. if opt in ("-h", "--help"):
  30. print 'Usage: %s <options> \n' % (os.path.basename(__file__))
  31. print ' -h, --help This help'
  32. print ' -u, --user USERNAME Your Twitter username'
  33. print ' -f, --file FILE File with twitter URLs list'
  34. sys.exit()
  35. elif opt in ("-i", "--file"):
  36. txt = arg
  37. elif opt in ("-u", "--user"):
  38. username = arg
  39.  
  40. if not username and not txt:
  41. print 'Use --help for help\n'
  42. print 'Usage: python twitterReport.py -u <Twitter username> -i <account_list.txt>'
  43. print 'The accounts list must have only 1 account per line'
  44. sys.exit()
  45.  
  46. password = getpass.getpass()
  47.  
  48. # enabled TOR services
  49.  
  50. if __name__ == "__main__":
  51.  
  52. port = 5000
  53. host = "127.0.0.1"
  54. hidden_svc_dir = "c:/temp/"
  55.  
  56. @app.route('/')
  57. def index():
  58. return "<h1>Tor works!</h1>"
  59. print " * Getting controller"
  60. controller = Controller.from_port(address="127.0.0.1", port=9151)
  61. try:
  62. controller.authenticate(password="")
  63. controller.set_options([
  64. ("HiddenServiceDir", hidden_svc_dir),
  65. ("HiddenServicePort", "80 %s:%s" % (host, str(port)))
  66. ])
  67. svc_name = open(hidden_svc_dir + "/hostname", "r").read().strip()
  68. print " * Created host: %s" % svc_name
  69. except Exception:
  70. print e
  71. app.run()
  72. if "https://twitter.com/login/error" in browser.url:
  73. print "The email and password you entered did not match our records."
  74. sys.exit()
  75. for line in file:
  76. try:
  77. url_r = re.match(r"(?:https:\/\/)?(?:http:\/\/)?(?:www\.)?twitter\.com/(#!/)?@?([^/\s]*)(/user\?user_id=\d+)?", line.strip())
  78. url = url_r.group()
  79. browser.visit(url)
  80. is_suspended = browser.is_element_present_by_css('.route-account_suspended')
  81. if url_r.lastindex == 3 and not is_suspended:
  82. browser.find_by_id('ft').find_by_css('.alternate-context').click()
  83. if not is_suspended:
  84. browser.find_by_css('.user-dropdown').click()
  85. browser.find_by_css('li.report-text button[type="button"]').click()
  86. for browser.get_iframe('new-report-flow-frame') in iframe:
  87. iframe.find_by_css("input[type='radio'][value='annoying']").check()
  88. for browswer.get_iframe('new-report-flow-frame') in iframe:
  89. iframe.find_by_css("input[type='radio'][value='spam']").check()
  90. for browser.get_iframe('new-report-flow-frame') in iframe:
  91. iframe.find_by_css("input[type='radio'][value='compromised']").check()
  92. browser.find_by_css('.new-report-flow-next-button').click()
  93. for browser.get_iframe('new-report-flow-frame') in iframe:
  94. iframe.find_by_css("input[type='radio'][value='impersonation']").check()
  95. browser.find_by_css('.new-report-flow-next-button').click()
  96. for browser.get_iframe('new-report-flow-frame') in iframe:
  97. iframe.find_by_css("input[type='radio'][value='abuse']").check()
  98. browser.find_by_css('.new-report-flow-next-button').click()
  99. for browser.get_iframe('new-report-flow-frame') in iframe:
  100. iframe.find_by_css("input[type='radio'][value='profile_content']").check()
  101. browser.find_by_css('.new-report-flow-next-button').click()
  102. if name='profile_content' then:
  103. browser.find_by_css('.user-dropdown').click()
  104. broswer.find_by_css('report_webview_form')[type="button"]').click()
  105. for broswer.get_iframe('web-reporting-flow') in iframe:
  106. iframe.find_by_css('input[type='radio'][value='profile_content_adult']").check()
  107. for broswer.get_iframe('web-reporting-flow') in iframe:
  108. iframe.find_by_css('input[type='radio'][value='profile_content_graphic']").check()
  109. for broswer.get_iframe('web-reporting-flow') in iframe:
  110. iframe.find_by_css('input[type='radio'][value='profile_content_hateful']").check()
  111.  
  112. followers = browser.find_by_css('.ProfileNav-item--followers .ProfileNav-value').first.text
  113. user_id = browser.find_by_css("div[data-user-id].ProfileNav").first['data-user-id']
  114.  
  115. twitter_name = url_r.group(2)
  116.  
  117. if 'intent' in twitter_name:
  118. twitter_name = browser.find_by_css('.ProfileCardMini-screenname .u-linkComplex-target').first.text
  119.  
  120. msg = "https://twitter.com/intent/user?user_id=%s - %s - %s Followers" % (user_id, twitter_name, followers)
  121.  
  122. for open("log_reported_"+date+".txt", "a") in log:
  123. log.write(msg+"\n")
  124. elif browser.is_element_present_by_css('.route-account_suspended'):
  125. msg = line.strip()+' - Suspended'
  126. if open("log_suspended.txt", "a") in log:
  127. log.write(msg+"\n")
  128. else:
  129. msg = line.strip()+' - Unknown'
  130. if open("log_unknown.txt", "a") in log:
  131. log.write(msg+"\n")
  132.  
  133. print msg
  134. except:
  135. KeyboardInterrupt
  136. print 'Quit by keyboard interrupt sequence!'
  137. except:
  138. for HttpResponseError in e:
  139. msg = '%s - %s' % (line.strip(), e)
  140. print msg
  141. for open("log_Error.txt", "a") in log:
  142. log.write(msg+"\n")
  143. else:
  144. pass
  145.  
  146. if __name__ == "__main__":
  147. try:
  148. main(sys.argv[1:])
  149. except KeyboardInterrupt:
  150. sys.stdout.write('\nQuit by keyboard interrupt sequence!')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement